Merge branch 'hn/reftable' into master

Brown-paper-bag fix.

* hn/reftable:
  refs: move the logic to add \t to reflog to the files backend
diff --git a/Documentation/MyFirstContribution.txt b/Documentation/MyFirstContribution.txt
index 427274d..d85c9b5 100644
--- a/Documentation/MyFirstContribution.txt
+++ b/Documentation/MyFirstContribution.txt
@@ -1179,8 +1179,8 @@
 [[after-approval]]
 === After Review Approval
 
-The Git project has four integration branches: `pu`, `next`, `master`, and
-`maint`. Your change will be placed into `pu` fairly early on by the maintainer
+The Git project has four integration branches: `seen`, `next`, `master`, and
+`maint`. Your change will be placed into `seen` fairly early on by the maintainer
 while it is still in the review process; from there, when it is ready for wider
 testing, it will be merged into `next`. Plenty of early testers use `next` and
 may report issues. Eventually, changes in `next` will make it to `master`,
diff --git a/Documentation/RelNotes/2.28.0.txt b/Documentation/RelNotes/2.28.0.txt
index 02e150e..6baf781 100644
--- a/Documentation/RelNotes/2.28.0.txt
+++ b/Documentation/RelNotes/2.28.0.txt
@@ -6,18 +6,8 @@
 
 Backward compatibility notes
 
- * "feature.experimental" configuration variable is to let volunteers
-   easily opt into a set of newer features, which use of the v2
-   transport protocol is now a part of.
-
- * It used to be that setting extensions.* configuration variables
-   alone, while leaving core.repositoryFormatVersion=0, made these
-   settings effective, which was a wrong thing to do.  In version 0,
-   there was no special meaning in extensions.* configuration
-   variables.  This has been corrected.  If you need these repository
-   extensions to be effective, the core.repositoryFormatVersion
-   variable needs to be updated to 1 after vetting these extensions.*
-   variables are set correctly.
+ * "fetch.writeCommitGraph" is deemed to be still a bit too risky and
+   is no longer part of the "feature.experimental" set.
 
 
 UI, Workflows & Features
@@ -41,6 +31,20 @@
  * "git diff-files" has been taught to say paths that are marked as
    intent-to-add are new files, not modified from an empty blob.
 
+ * "git status" learned to report the status of sparse checkout.
+
+ * "git difftool" has trouble dealing with paths added to the index
+   with the intent-to-add bit.
+
+ * "git fast-export --anonymize" learned to take customized mapping to
+   allow its users to tweak its output more usable for debugging.
+
+ * The command line completion support (in contrib/) used to be
+   prepared to work with "set -u" but recent changes got a bit more
+   sloppy.  This has been corrected.
+
+ * "git gui" now allows opening work trees from the start-up dialog.
+
 
 Performance, Internal Implementation, Development Support etc.
 
@@ -90,6 +94,30 @@
 
  * A misdesigned strbuf_write_fd() function has been retired.
 
+ * SHA-256 migration work continues, including CVS/SVN interface.
+
+ * A few fields in "struct commit" that do not have to always be
+   present have been moved to commit slabs.
+
+ * API cleanup for get_worktrees()
+
+ * By renumbering object flag bits, "struct object" managed to lose
+   bloated inter-field padding.
+
+ * The name of the primary branch in existing repositories, and the
+   default name used for the first branch in newly created
+   repositories, is made configurable, so that we can eventually wean
+   ourselves off of the hardcoded 'master'.
+
+ * The effort to avoid using test_must_fail on non-git command continues.
+
+ * In 2.28-rc0, we corrected a bug that some repository extensions are
+   honored by mistake even in a version 0 repositories (these
+   configuration variables in extensions.* namespace were supposed to
+   have special meaning in repositories whose version numbers are 1 or
+   higher), but this was a bit too big a change.  The behaviour in
+   recent versions of Git where certain extensions.* were honored by
+   mistake even in version 0 repositories has been restored.
 
 
 Fixes since v2.27
@@ -158,6 +186,42 @@
  * An in-code comment in "git diff" has been updated.
    (merge c592fd4c83 dl/diff-usage-comment-update later to maint).
 
+ * The documentation and some tests have been adjusted for the recent
+   renaming of "pu" branch to "seen".
+   (merge 6dca5dbf93 js/pu-to-seen later to maint).
+
+ * The code to push changes over "dumb" HTTP had a bad interaction
+   with the commit reachability code due to incorrect allocation of
+   object flag bits, which has been corrected.
+   (merge 64472d15e9 bc/http-push-flagsfix later to maint).
+
+ * "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
+   header with the value given from the command line, and let it be
+   overridden by the value on In-Reply-To: header in the messages
+   being sent out (if exists).
+   (merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).
+
+ * "git log -Lx,y:path --before=date" lost track of where the range
+   should be because it didn't take the changes made by the youngest
+   commits that are omitted from the output into account.
+
+ * When "fetch.writeCommitGraph" configuration is set in a shallow
+   repository and a fetch moves the shallow boundary, we wrote out
+   broken commit-graph files that do not match the reality, which has
+   been corrected.
+
+ * "git checkout" failed to catch an error from fstat() after updating
+   a path in the working tree.
+   (merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).
+
+ * When an aliased command, whose output is piped to a pager by git,
+   gets killed by a signal, the pager got into a funny state, which
+   has been corrected (again).
+   (merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint).
+
+ * The code to produce progress output from "git commit-graph --write"
+   had a few breakages, which have been fixed.
+
  * Other code cleanup, docfix, build fix, etc.
    (merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
    (merge d63ae31962 cb/t5608-cleanup later to maint).
@@ -166,3 +230,7 @@
    (merge b75a219904 es/advertise-contribution-doc later to maint).
    (merge 0c9a4f638a rs/pull-leakfix later to maint).
    (merge d546fe2874 rs/commit-reach-leakfix later to maint).
+   (merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
+   (merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
+   (merge 0172f7834a cc/cat-file-usage-update later to maint).
+   (merge 81de0c01cf ma/rebase-doc-typofix later to maint).
diff --git a/Documentation/RelNotes/2.29.0.txt b/Documentation/RelNotes/2.29.0.txt
new file mode 100644
index 0000000..7b189d0
--- /dev/null
+++ b/Documentation/RelNotes/2.29.0.txt
@@ -0,0 +1,73 @@
+Git 2.29 Release Notes
+======================
+
+Updates since v2.28
+-------------------
+
+UI, Workflows & Features
+
+ * "git help log" has been enhanced by sharing more material from the
+   documentation for the underlying "git rev-list" command.
+
+ * "git for-each-ref --format=<>" learned %(contents:size).
+
+
+Performance, Internal Implementation, Development Support etc.
+
+ * The changed-path Bloom filter is improved using ideas from an
+   independent implementation.
+
+ * Updates to the changed-paths bloom filter.
+
+ * The test framework has been updated so that most tests will run
+   with predictable (artificial) timestamps.
+
+ * Preliminary clean-up of the refs API in preparation for adding a
+   new refs backend "reftable".
+
+ * Dev support to limit the use of test_must_fail to only git commands.
+
+
+Fixes since v2.28
+-----------------
+
+ * "git clone --separate-git-dir=$elsewhere" used to stomp on the
+   contents of the existing directory $elsewhere, which has been
+   taught to fail when $elsewhere is not an empty directory.
+   (merge dfaa209a79 bw/fail-cloning-into-non-empty later to maint).
+
+
+ * With the base fix to 2.27 regresion, any new extensions in a v0
+   repository would still be silently honored, which is not quite
+   right.  Instead, complain and die loudly.
+   (merge ec91ffca04 jk/reject-newer-extensions-in-v0 later to maint).
+
+ * Fetching from a lazily cloned repository resulted at the server
+   side in attempts to lazy fetch objects that the client side has,
+   many of which will not be available from the third-party anyway.
+   (merge 77aa0941ce jt/avoid-lazy-fetching-upon-have-check later to maint).
+
+ * Fix to an ancient bug caused by an over-eager attempt for
+   optimization.
+   (merge a98f7fb366 rs/add-index-entry-optim-fix later to maint).
+
+ * Pushing a ref whose name contains non-ASCII character with the
+   "--force-with-lease" option did not work over smart HTTP protocol,
+   which has been corrected.
+   (merge cd85b447bf bc/push-cas-cquoted-refname later to maint).
+
+ * "git mv src dst", when src is an unmerged path, errored out
+   correctly but with an incorrect error message to claim that src is
+   not tracked, which has been clarified.
+   (merge 9b906af657 ct/mv-unmerged-path-error later to maint).
+
+ * Fix to a regression introduced during 2.27 cycle.
+   (merge cada7308ad en/fill-directory-exponential later to maint).
+
+ * Other code cleanup, docfix, build fix, etc.
+   (merge 84544f2ea3 sk/typofixes later to maint).
+   (merge b17f411ab5 ar/help-guides-doc later to maint).
+   (merge 98c6871fad rs/grep-simpler-parse-object-or-die-call later to maint).
+   (merge 861c4ce141 en/typofixes later to maint).
+   (merge 60e47f6773 sg/ci-git-path-fix-with-pyenv later to maint).
+   (merge e2bfa50ac3 jb/doc-packfile-name later to maint).
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index ecf9438..291b61e 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -19,7 +19,7 @@
   base your work on the tip of the topic.
 
 * A new feature should be based on `master` in general. If the new
-  feature depends on a topic that is in `pu`, but not in `master`,
+  feature depends on a topic that is in `seen`, but not in `master`,
   base your work on the tip of that topic.
 
 * Corrections and enhancements to a topic not yet in `master` should
@@ -28,7 +28,7 @@
   into the series.
 
 * In the exceptional case that a new feature depends on several topics
-  not in `master`, start working on `next` or `pu` privately and send
+  not in `master`, start working on `next` or `seen` privately and send
   out patches for discussion. Before the final merge, you may have to
   wait until some of the dependent topics graduate to `master`, and
   rebase your work.
@@ -38,7 +38,7 @@
   these parts should be based on their trees.
 
 To find the tip of a topic branch, run `git log --first-parent
-master..pu` and look for the merge commit. The second parent of this
+master..seen` and look for the merge commit. The second parent of this
 commit is the tip of the topic branch.
 
 [[separate-commits]]
@@ -424,7 +424,7 @@
   and cooked further and eventually graduates to `master`.
 
 In any time between the (2)-(3) cycle, the maintainer may pick it up
-from the list and queue it to `pu`, in order to make it easier for
+from the list and queue it to `seen`, in order to make it easier for
 people play with it without having to pick up and apply the patch to
 their trees themselves.
 
@@ -435,7 +435,7 @@
   master. `git pull --rebase` will automatically skip already-applied
   patches, and will let you know. This works only if you rebase on top
   of the branch in which your patch has been merged (i.e. it will not
-  tell you if your patch is merged in pu if you rebase on top of
+  tell you if your patch is merged in `seen` if you rebase on top of
   master).
 
 * Read the Git mailing list, the maintainer regularly posts messages
diff --git a/Documentation/config/feature.txt b/Documentation/config/feature.txt
index 28c3360..c0cbf2b 100644
--- a/Documentation/config/feature.txt
+++ b/Documentation/config/feature.txt
@@ -15,14 +15,6 @@
 * `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
 skipping more commits at a time, reducing the number of round trips.
 +
-* `fetch.writeCommitGraph=true` writes a commit-graph after every `git fetch`
-command that downloads a pack-file from a remote. Using the `--split` option,
-most executions will create a very small commit-graph file on top of the
-existing commit-graph file(s). Occasionally, these files will merge and the
-write may take longer. Having an updated commit-graph file helps performance
-of many Git commands, including `git merge-base`, `git push -f`, and
-`git log --graph`.
-+
 * `protocol.version=2` speeds up fetches from repositories with many refs by
 allowing the client to specify which refs to list before the server lists
 them.
diff --git a/Documentation/config/fetch.txt b/Documentation/config/fetch.txt
index b1a9b14..b203940 100644
--- a/Documentation/config/fetch.txt
+++ b/Documentation/config/fetch.txt
@@ -90,5 +90,4 @@
 	the existing commit-graph file(s). Occasionally, these files will
 	merge and the write may take longer. Having an updated commit-graph
 	file helps performance of many Git commands, including `git merge-base`,
-	`git push -f`, and `git log --graph`. Defaults to false, unless
-	`feature.experimental` is true.
+	`git push -f`, and `git log --graph`. Defaults to false.
diff --git a/Documentation/config/fmt-merge-msg.txt b/Documentation/config/fmt-merge-msg.txt
index c73cfa9..a8e8f74 100644
--- a/Documentation/config/fmt-merge-msg.txt
+++ b/Documentation/config/fmt-merge-msg.txt
@@ -8,3 +8,15 @@
 	most the specified number of one-line descriptions from the
 	actual commits that are being merged.  Defaults to false, and
 	true is a synonym for 20.
+
+merge.suppressDest::
+	By adding a glob that matches the names of integration
+	branches to this multi-valued configuration variable, the
+	default merge message computed for merges into these
+	integration branches will omit " into <branch name>" from
+	its title.
++
+An element with an empty value can be used to clear the list
+of globs accumulated from previous configuration entries.
+When there is no `merge.suppressDest` variable defined, the
+default value of `master` is used for backward compatibility.
diff --git a/Documentation/config/init.txt b/Documentation/config/init.txt
index 46fa8c6..dc77f8c 100644
--- a/Documentation/config/init.txt
+++ b/Documentation/config/init.txt
@@ -1,3 +1,7 @@
 init.templateDir::
 	Specify the directory from which templates will be copied.
 	(See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
+
+init.defaultBranch::
+	Allows overriding the default branch name e.g. when initializing
+	a new repository or when cloning an empty repository.
diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt
index 135206f..03c0824 100644
--- a/Documentation/git-branch.txt
+++ b/Documentation/git-branch.txt
@@ -12,7 +12,7 @@
 	[-v [--abbrev=<length> | --no-abbrev]]
 	[--column[=<options>] | --no-column] [--sort=<key>]
 	[(--merged | --no-merged) [<commit>]]
-	[--contains [<commit]] [--no-contains [<commit>]]
+	[--contains [<commit>]] [--no-contains [<commit>]]
 	[--points-at <object>] [--format=<format>]
 	[(-r | --remotes) | (-a | --all)]
 	[--list] [<pattern>...]
diff --git a/Documentation/git-cat-file.txt b/Documentation/git-cat-file.txt
index 8eca671..8e192d8 100644
--- a/Documentation/git-cat-file.txt
+++ b/Documentation/git-cat-file.txt
@@ -10,7 +10,7 @@
 --------
 [verse]
 'git cat-file' (-t [--allow-unknown-type]| -s [--allow-unknown-type]| -e | -p | <type> | --textconv | --filters ) [--path=<path>] <object>
-'git cat-file' (--batch | --batch-check) [ --textconv | --filters ] [--follow-symlinks]
+'git cat-file' (--batch[=<format>] | --batch-check[=<format>]) [ --textconv | --filters ] [--follow-symlinks]
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index 08d6045..c898310 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -259,7 +259,7 @@
 branch. This is useful e.g. to maintain minimal clones of the default
 branch of some repository for search indexing.
 
---recurse-submodules[=<pathspec]::
+--recurse-submodules[=<pathspec>]::
 	After the clone is created, initialize and clone submodules
 	within based on the provided pathspec.  If no pathspec is
 	provided, all submodules are initialized and cloned.
diff --git a/Documentation/git-commit-graph.txt b/Documentation/git-commit-graph.txt
index 8ca1764..17405c7 100644
--- a/Documentation/git-commit-graph.txt
+++ b/Documentation/git-commit-graph.txt
@@ -62,7 +62,10 @@
 With the `--changed-paths` option, compute and write information about the
 paths changed between a commit and its first parent. This operation can
 take a while on large repositories. It provides significant performance gains
-for getting history of a directory or a file with `git log -- <path>`.
+for getting history of a directory or a file with `git log -- <path>`. If
+this option is given, future commit-graph writes will automatically assume
+that this option was intended. Use `--no-changed-paths` to stop storing this
+data.
 +
 With the `--split[=<strategy>]` option, write the commit-graph as a
 chain of multiple commit-graph files stored in
diff --git a/Documentation/git-diff.txt b/Documentation/git-diff.txt
index 1018110..727f24d 100644
--- a/Documentation/git-diff.txt
+++ b/Documentation/git-diff.txt
@@ -63,13 +63,7 @@
 	This is to view the changes between two arbitrary
 	<commit>.
 
-'git diff' [<options>] <commit>..<commit> [--] [<path>...]::
-
-	This is synonymous to the previous form.  If <commit> on
-	one side is omitted, it will have the same effect as
-	using HEAD instead.
-
-'git diff' [<options>] <commit> [<commit>...] <commit> [--] [<path>...]::
+'git diff' [<options>] <commit> <commit>... <commit> [--] [<path>...]::
 
 	This form is to view the results of a merge commit.  The first
 	listed <commit> must be the merge itself; the remaining two or
@@ -78,6 +72,13 @@
 	For instance, if `master` names a merge commit, `git diff master
 	master^@` gives the same combined diff as `git show master`.
 
+'git diff' [<options>] <commit>..<commit> [--] [<path>...]::
+
+	This is synonymous to the earlier form (without the "..") for
+	viewing the changes between two arbitrary <commit>.  If <commit> on
+	one side is omitted, it will have the same effect as
+	using HEAD instead.
+
 'git diff' [<options>] <commit>\...<commit> [--] [<path>...]::
 
 	This form is to view the changes on the branch containing
diff --git a/Documentation/git-fast-export.txt b/Documentation/git-fast-export.txt
index e8950de..1978dbd 100644
--- a/Documentation/git-fast-export.txt
+++ b/Documentation/git-fast-export.txt
@@ -119,6 +119,11 @@
 	the shape of the history and stored tree.  See the section on
 	`ANONYMIZING` below.
 
+--anonymize-map=<from>[:<to>]::
+	Convert token `<from>` to `<to>` in the anonymized output. If
+	`<to>` is omitted, map `<from>` to itself (i.e., do not
+	anonymize it). See the section on `ANONYMIZING` below.
+
 --reference-excluded-parents::
 	By default, running a command such as `git fast-export
 	master~5..master` will not include the commit master{tilde}5
@@ -238,6 +243,30 @@
 smaller output, and it is usually easy to quickly confirm that there is
 no private data in the stream.
 
+Reproducing some bugs may require referencing particular commits or
+paths, which becomes challenging after refnames and paths have been
+anonymized. You can ask for a particular token to be left as-is or
+mapped to a new value. For example, if you have a bug which reproduces
+with `git rev-list sensitive -- secret.c`, you can run:
+
+---------------------------------------------------
+$ git fast-export --anonymize --all \
+      --anonymize-map=sensitive:foo \
+      --anonymize-map=secret.c:bar.c \
+      >stream
+---------------------------------------------------
+
+After importing the stream, you can then run `git rev-list foo -- bar.c`
+in the anonymized repository.
+
+Note that paths and refnames are split into tokens at slash boundaries.
+The command above would anonymize `subdir/secret.c` as something like
+`path123/bar.c`; you could then search for `bar.c` in the anonymized
+repository to determine the final pathname.
+
+To make referencing the final pathname simpler, you can map each path
+component; so if you also anonymize `subdir` to `publicdir`, then the
+final pathname would be `publicdir/bar.c`.
 
 LIMITATIONS
 -----------
diff --git a/Documentation/git-fetch.txt b/Documentation/git-fetch.txt
index 5b1909f..45b6d8e 100644
--- a/Documentation/git-fetch.txt
+++ b/Documentation/git-fetch.txt
@@ -255,14 +255,14 @@
 * Using refspecs explicitly:
 +
 ------------------------------------------------
-$ git fetch origin +pu:pu maint:tmp
+$ git fetch origin +seen:seen maint:tmp
 ------------------------------------------------
 +
-This updates (or creates, as necessary) branches `pu` and `tmp` in
+This updates (or creates, as necessary) branches `seen` and `tmp` in
 the local repository by fetching from the branches (respectively)
-`pu` and `maint` from the remote repository.
+`seen` and `maint` from the remote repository.
 +
-The `pu` branch will be updated even if it does not fast-forward,
+The `seen` branch will be updated even if it does not fast-forward,
 because it is prefixed with a plus sign; `tmp` will not be.
 
 * Peek at a remote's branch, without configuring the remote in your local
diff --git a/Documentation/git-for-each-ref.txt b/Documentation/git-for-each-ref.txt
index 6dcd39f..2ea71c5 100644
--- a/Documentation/git-for-each-ref.txt
+++ b/Documentation/git-for-each-ref.txt
@@ -232,12 +232,27 @@
 `committer`, and `tagger`) can be suffixed with `name`, `email`,
 and `date` to extract the named component.
 
-The complete message in a commit and tag object is `contents`.
-Its first line is `contents:subject`, where subject is the concatenation
-of all lines of the commit message up to the first blank line.  The next
-line is `contents:body`, where body is all of the lines after the first
-blank line.  The optional GPG signature is `contents:signature`.  The
-first `N` lines of the message is obtained using `contents:lines=N`.
+The message in a commit or a tag object is `contents`, from which
+`contents:<part>` can be used to extract various parts out of:
+
+contents:size::
+	The size in bytes of the commit or tag message.
+
+contents:subject::
+	The first paragraph of the message, which typically is a
+	single line, is taken as the "subject" of the commit or the
+	tag message.
+
+contents:body::
+	The remainder of the commit or the tag message that follows
+	the "subject".
+
+contents:signature::
+	The optional GPG signature of the tag.
+
+contents:lines=N::
+	The first `N` lines of the message.
+
 Additionally, the trailers as interpreted by linkgit:git-interpret-trailers[1]
 are obtained as `trailers` (or by using the historical alias
 `contents:trailers`).  Non-trailer lines from the trailer block can be omitted
diff --git a/Documentation/git-help.txt b/Documentation/git-help.txt
index f71db0d..69c0c5c 100644
--- a/Documentation/git-help.txt
+++ b/Documentation/git-help.txt
@@ -8,7 +8,7 @@
 SYNOPSIS
 --------
 [verse]
-'git help' [-a|--all [--[no-]verbose]] [-g|--guide]
+'git help' [-a|--all [--[no-]verbose]] [-g|--guides]
 	   [-i|--info|-m|--man|-w|--web] [COMMAND|GUIDE]
 
 DESCRIPTION
@@ -21,7 +21,7 @@
 If the option `--all` or `-a` is given, all available commands are
 printed on the standard output.
 
-If the option `--guide` or `-g` is given, a list of the useful
+If the option `--guides` or `-g` is given, a list of the useful
 Git guides is also printed on the standard output.
 
 If a command, or a guide, is given, a manual page for that command or
diff --git a/Documentation/git-index-pack.txt b/Documentation/git-index-pack.txt
index d5b7560..ac74d05 100644
--- a/Documentation/git-index-pack.txt
+++ b/Documentation/git-index-pack.txt
@@ -93,11 +93,19 @@
 --max-input-size=<size>::
 	Die, if the pack is larger than <size>.
 
+--object-format=<hash-algorithm>::
+	Specify the given object format (hash algorithm) for the pack.  The valid
+	values are 'sha1' and (if enabled) 'sha256'.  The default is the algorithm for
+	the current repository (set by `extensions.objectFormat`), or 'sha1' if no
+	value is set or outside a repository.
++
+This option cannot be used with --stdin.
+
 NOTES
 -----
 
-Once the index has been created, the list of object names is sorted
-and the SHA-1 hash of that list is printed to stdout. If --stdin was
+Once the index has been created, the hash that goes into the name of
+the pack/idx file is printed to stdout. If --stdin was
 also used then this is prefixed by either "pack\t", or "keep\t" if a
 new .keep file was successfully created. This is useful to remove a
 .keep file used as a lock to prevent the race with 'git repack'
diff --git a/Documentation/git-init.txt b/Documentation/git-init.txt
index adc6adf..ddfe265 100644
--- a/Documentation/git-init.txt
+++ b/Documentation/git-init.txt
@@ -10,7 +10,8 @@
 --------
 [verse]
 'git init' [-q | --quiet] [--bare] [--template=<template_directory>]
-	  [--separate-git-dir <git dir>] [--object-format=<format]
+	  [--separate-git-dir <git dir>] [--object-format=<format>]
+	  [-b <branch-name> | --initial-branch=<branch-name>]
 	  [--shared[=<permissions>]] [directory]
 
 
@@ -67,6 +68,12 @@
 +
 If this is reinitialization, the repository will be moved to the specified path.
 
+-b <branch-name::
+--initial-branch=<branch-name>::
+
+Use the specified name for the initial branch in the newly created repository.
+If not specified, fall back to the default name: `master`.
+
 --shared[=(false|true|umask|group|all|world|everybody|0xxx)]::
 
 Specify that the Git repository is to be shared amongst several users.  This
diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt
index 20e6d21..3fd26d5 100644
--- a/Documentation/git-log.txt
+++ b/Documentation/git-log.txt
@@ -15,9 +15,12 @@
 -----------
 Shows the commit logs.
 
-The command takes options applicable to the `git rev-list`
+:git-log: 1
+include::rev-list-description.txt[]
+
+The command takes options applicable to the linkgit:git-rev-list[1]
 command to control what is shown and how, and options applicable to
-the `git diff-*` commands to control how the changes
+the linkgit:git-diff[1] command to control how the changes
 each commit introduces are shown.
 
 
diff --git a/Documentation/git-ls-remote.txt b/Documentation/git-ls-remote.txt
index 0a5c8b7..492e573 100644
--- a/Documentation/git-ls-remote.txt
+++ b/Documentation/git-ls-remote.txt
@@ -101,9 +101,9 @@
 7ceca275d047c90c0c7d5afb13ab97efdf51bd6e	refs/tags/v0.99.3
 c5db5456ae3b0873fc659c19fafdde22313cc441	refs/tags/v0.99.2
 0918385dbd9656cab0d1d81ba7453d49bbc16250	refs/tags/junio-gpg-pub
-$ git ls-remote http://www.kernel.org/pub/scm/git/git.git master pu rc
+$ git ls-remote http://www.kernel.org/pub/scm/git/git.git master seen rc
 5fe978a5381f1fbad26a80e682ddd2a401966740	refs/heads/master
-c781a84b5204fb294c9ccc79f8b3baceeb32c061	refs/heads/pu
+c781a84b5204fb294c9ccc79f8b3baceeb32c061	refs/heads/seen
 $ git remote add korg http://www.kernel.org/pub/scm/git/git.git
 $ git ls-remote --tags korg v\*
 d6602ec5194c87b0fc87103ca4d67251c76f233a	refs/tags/v0.99
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index 4624cfd..374d248 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -259,7 +259,7 @@
 	unchanged as a result. If a temporary stash entry was created
 	using --autostash, it will be saved to the stash list.
 
---apply:
+--apply::
 	Use applying strategies to rebase (calling `git-am`
 	internally).  This option may become a no-op in the future
 	once the merge backend handles everything the apply one does.
diff --git a/Documentation/git-rev-list.txt b/Documentation/git-rev-list.txt
index 025c911..5da6623 100644
--- a/Documentation/git-rev-list.txt
+++ b/Documentation/git-rev-list.txt
@@ -14,44 +14,8 @@
 DESCRIPTION
 -----------
 
-List commits that are reachable by following the `parent` links from the
-given commit(s), but exclude commits that are reachable from the one(s)
-given with a '{caret}' in front of them.  The output is given in reverse
-chronological order by default.
-
-You can think of this as a set operation.  Commits given on the command
-line form a set of commits that are reachable from any of them, and then
-commits reachable from any of the ones given with '{caret}' in front are
-subtracted from that set.  The remaining commits are what comes out in the
-command's output.  Various other options and paths parameters can be used
-to further limit the result.
-
-Thus, the following command:
-
------------------------------------------------------------------------
-	$ git rev-list foo bar ^baz
------------------------------------------------------------------------
-
-means "list all the commits which are reachable from 'foo' or 'bar', but
-not from 'baz'".
-
-A special notation "'<commit1>'..'<commit2>'" can be used as a
-short-hand for "{caret}'<commit1>' '<commit2>'". For example, either of
-the following may be used interchangeably:
-
------------------------------------------------------------------------
-	$ git rev-list origin..HEAD
-	$ git rev-list HEAD ^origin
------------------------------------------------------------------------
-
-Another special notation is "'<commit1>'...'<commit2>'" which is useful
-for merges.  The resulting set of commits is the symmetric difference
-between the two operands.  The following two commands are equivalent:
-
------------------------------------------------------------------------
-	$ git rev-list A B --not $(git merge-base --all A B)
-	$ git rev-list A...B
------------------------------------------------------------------------
+:git-rev-list: 1
+include::rev-list-description.txt[]
 
 'rev-list' is a very essential Git command, since it
 provides the ability to build and traverse commit ancestry graphs. For
diff --git a/Documentation/git-show-index.txt b/Documentation/git-show-index.txt
index 424e4ba..39b1d8e 100644
--- a/Documentation/git-show-index.txt
+++ b/Documentation/git-show-index.txt
@@ -9,7 +9,7 @@
 SYNOPSIS
 --------
 [verse]
-'git show-index'
+'git show-index' [--object-format=<hash-algorithm>]
 
 
 DESCRIPTION
@@ -36,6 +36,15 @@
 linkgit:git-verify-pack[1]. However, as this command considers only the
 index file itself, it's both faster and more flexible.
 
+OPTIONS
+-------
+
+--object-format=<hash-algorithm>::
+	Specify the given object format (hash algorithm) for the index file.  The
+	valid values are 'sha1' and (if enabled) 'sha256'.  The default is the
+	algorithm for the current repository (set by `extensions.objectFormat`), or
+	'sha1' if no value is set or outside a repository..
+
 GIT
 ---
 Part of the linkgit:git[1] suite
diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt
index c9ed2bf..7e5f995 100644
--- a/Documentation/git-submodule.txt
+++ b/Documentation/git-submodule.txt
@@ -183,7 +183,7 @@
 	Sets the default remote tracking branch for the submodule. The
 	`--branch` option allows the remote branch to be specified. The
 	`--default` option removes the submodule.<name>.branch configuration
-	key, which causes the tracking branch to default to 'master'.
+	key, which causes the tracking branch to default to the remote 'HEAD'.
 
 set-url [--] <path> <newurl>::
 	Sets the URL of the specified submodule to <newurl>. Then, it will
@@ -284,7 +284,7 @@
 	`.gitmodules` for `update --remote`.  A special value of `.` is used to
 	indicate that the name of the branch in the submodule should be the
 	same name as the current branch in the current repository.  If the
-	option is not specified, it defaults to 'master'.
+	option is not specified, it defaults to the remote 'HEAD'.
 
 -f::
 --force::
@@ -322,10 +322,10 @@
 	the superproject's recorded SHA-1 to update the submodule, use the
 	status of the submodule's remote-tracking branch.  The remote used
 	is branch's remote (`branch.<name>.remote`), defaulting to `origin`.
-	The remote branch used defaults to `master`, but the branch name may
-	be overridden by setting the `submodule.<name>.branch` option in
-	either `.gitmodules` or `.git/config` (with `.git/config` taking
-	precedence).
+	The remote branch used defaults to the remote `HEAD`, but the branch
+	name may be overridden by setting the `submodule.<name>.branch`
+	option in either `.gitmodules` or `.git/config` (with `.git/config`
+	taking precedence).
 +
 This works for any of the supported update procedures (`--checkout`,
 `--rebase`, etc.).  The only change is the source of the target SHA-1.
diff --git a/Documentation/giteveryday.txt b/Documentation/giteveryday.txt
index 1bd919f..faba2ef 100644
--- a/Documentation/giteveryday.txt
+++ b/Documentation/giteveryday.txt
@@ -278,13 +278,13 @@
 $ compile/test
 $ git switch -c hold/linus && git am -3 -i -s ./+hold-linus <5>
 $ git switch topic/one && git rebase master <6>
-$ git switch -C pu next <7>
+$ git switch -C seen next <7>
 $ git merge topic/one topic/two && git merge hold/linus <8>
 $ git switch maint
 $ git cherry-pick master~4 <9>
 $ compile/test
 $ git tag -s -m "GIT 0.99.9x" v0.99.9x <10>
-$ git fetch ko && for branch in master maint next pu <11>
+$ git fetch ko && for branch in master maint next seen <11>
     do
 	git show-branch ko/$branch $branch <12>
     done
@@ -294,14 +294,14 @@
 <1> see what you were in the middle of doing, if anything.
 <2> see which branches haven't been merged into `master` yet.
 Likewise for any other integration branches e.g. `maint`, `next`
-and `pu` (potential updates).
+and `seen`.
 <3> read mails, save ones that are applicable, and save others
 that are not quite ready (other mail readers are available).
 <4> apply them, interactively, with your sign-offs.
 <5> create topic branch as needed and apply, again with sign-offs.
 <6> rebase internal topic branch that has not been merged to the
 master or exposed as a part of a stable branch.
-<7> restart `pu` every time from the next.
+<7> restart `seen` every time from the next.
 <8> and bundle topic branches still cooking.
 <9> backport a critical fix.
 <10> create a signed tag.
@@ -323,7 +323,7 @@
 	fetch = refs/heads/*:refs/remotes/ko/*
 	push = refs/heads/master
 	push = refs/heads/next
-	push = +refs/heads/pu
+	push = +refs/heads/seen
 	push = refs/heads/maint
 ------------
 
diff --git a/Documentation/githooks.txt b/Documentation/githooks.txt
index 81f2a87..31b601e 100644
--- a/Documentation/githooks.txt
+++ b/Documentation/githooks.txt
@@ -404,6 +404,35 @@
 `git send-pack` on the other end, so you can simply `echo` messages
 for the user.
 
+reference-transaction
+~~~~~~~~~~~~~~~~~~~~~
+
+This hook is invoked by any Git command that performs reference
+updates. It executes whenever a reference transaction is prepared,
+committed or aborted and may thus get called multiple times.
+
+The hook takes exactly one argument, which is the current state the
+given reference transaction is in:
+
+    - "prepared": All reference updates have been queued to the
+      transaction and references were locked on disk.
+
+    - "committed": The reference transaction was committed and all
+      references now have their respective new value.
+
+    - "aborted": The reference transaction was aborted, no changes
+      were performed and the locks have been released.
+
+For each reference update that was added to the transaction, the hook
+receives on standard input a line of the format:
+
+  <old-value> SP <new-value> SP <ref-name> LF
+
+The exit status of the hook is ignored for any state except for the
+"prepared" state. In the "prepared" state, a non-zero exit status will
+cause the transaction to be aborted. The hook will not be called with
+"aborted" state in that case.
+
 push-to-checkout
 ~~~~~~~~~~~~~~~~
 
diff --git a/Documentation/gitmodules.txt b/Documentation/gitmodules.txt
index 67275fd..539b4e1 100644
--- a/Documentation/gitmodules.txt
+++ b/Documentation/gitmodules.txt
@@ -49,9 +49,9 @@
 
 submodule.<name>.branch::
 	A remote branch name for tracking updates in the upstream submodule.
-	If the option is not specified, it defaults to 'master'.  A special
-	value of `.` is used to indicate that the name of the branch in the
-	submodule should be the same name as the current branch in the
+	If the option is not specified, it defaults to the remote 'HEAD'.
+	A special value of `.` is used to indicate that the name of the branch
+	in the submodule should be the same name as the current branch in the
 	current repository.  See the `--remote` documentation in
 	linkgit:git-submodule[1] for details.
 
diff --git a/Documentation/gitremote-helpers.txt b/Documentation/gitremote-helpers.txt
index 93baeeb..6f1e269 100644
--- a/Documentation/gitremote-helpers.txt
+++ b/Documentation/gitremote-helpers.txt
@@ -238,6 +238,9 @@
 	`--signed-tags=verbatim` to linkgit:git-fast-export[1].  In the
 	absence of this capability, Git will use `--signed-tags=warn-strip`.
 
+'object-format'::
+	This indicates that the helper is able to interact with the remote
+	side using an explicit hash algorithm extension.
 
 
 COMMANDS
@@ -257,12 +260,14 @@
 'list'::
 	Lists the refs, one per line, in the format "<value> <name>
 	[<attr> ...]". The value may be a hex sha1 hash, "@<dest>" for
-	a symref, or "?" to indicate that the helper could not get the
-	value of the ref. A space-separated list of attributes follows
-	the name; unrecognized attributes are ignored. The list ends
-	with a blank line.
+	a symref, ":<keyword> <value>" for a key-value pair, or
+	"?" to indicate that the helper could not get the value of the
+	ref. A space-separated list of attributes follows the name;
+	unrecognized attributes are ignored. The list ends with a
+	blank line.
 +
 See REF LIST ATTRIBUTES for a list of currently defined attributes.
+See REF LIST KEYWORDS for a list of currently defined keywords.
 +
 Supported if the helper has the "fetch" or "import" capability.
 
@@ -432,6 +437,18 @@
 	This ref is unchanged since the last import or fetch, although
 	the helper cannot necessarily determine what value that produced.
 
+REF LIST KEYWORDS
+-----------------
+
+The 'list' command may produce a list of key-value pairs.
+The following keys are defined.
+
+'object-format'::
+	The refs are using the given hash algorithm.  This keyword is only
+	used if the server and client both support the object-format
+	extension.
+
+
 OPTIONS
 -------
 
@@ -516,6 +533,14 @@
 	transaction.  If successful, all refs will be updated, or none will.  If the
 	remote side does not support this capability, the push will fail.
 
+'option object-format' {'true'|algorithm}::
+	If 'true', indicate that the caller wants hash algorithm information
+	to be passed back from the remote.  This mode is used when fetching
+	refs.
++
+If set to an algorithm, indicate that the caller wants to interact with
+the remote side using that algorithm.
+
 SEE ALSO
 --------
 linkgit:git-remote[1]
diff --git a/Documentation/gitworkflows.txt b/Documentation/gitworkflows.txt
index abc0dc6..47cf97f 100644
--- a/Documentation/gitworkflows.txt
+++ b/Documentation/gitworkflows.txt
@@ -85,15 +85,15 @@
 
 There is a fourth official branch that is used slightly differently:
 
-* 'pu' (proposed updates) is an integration branch for things that are
-  not quite ready for inclusion yet (see "Integration Branches"
-  below).
+* 'seen' (patches seen by the maintainer) is an integration branch for
+  things that are not quite ready for inclusion yet (see "Integration
+  Branches" below).
 
 Each of the four branches is usually a direct descendant of the one
 above it.
 
 Conceptually, the feature enters at an unstable branch (usually 'next'
-or 'pu'), and "graduates" to 'master' for the next release once it is
+or 'seen'), and "graduates" to 'master' for the next release once it is
 considered stable enough.
 
 
@@ -207,7 +207,7 @@
 right after the testing, you can even publish this branch, for example
 to give the testers a chance to work with it, or other developers a
 chance to see if their in-progress work will be compatible.  `git.git`
-has such an official throw-away integration branch called 'pu'.
+has such an official throw-away integration branch called 'seen'.
 
 
 Branch management for a release
@@ -291,8 +291,8 @@
 described in the previous section.
 
 
-Branch management for next and pu after a feature release
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Branch management for next and seen after a feature release
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 After a feature release, the integration branch 'next' may optionally be
 rewound and rebuilt from the tip of 'master' using the surviving
@@ -319,8 +319,8 @@
 If you do this, then you should make a public announcement indicating
 that 'next' was rewound and rebuilt.
 
-The same rewind and rebuild process may be followed for 'pu'. A public
-announcement is not necessary since 'pu' is a throw-away branch, as
+The same rewind and rebuild process may be followed for 'seen'. A public
+announcement is not necessary since 'seen' is a throw-away branch, as
 described above.
 
 
diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index 73be8b4..a67130d 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -66,7 +66,7 @@
    demonstrated to be regression free.  New changes are tested
    in 'next' before merged to 'master'.
 
- - 'pu' branch is used to publish other proposed changes that do
+ - 'seen' branch is used to publish other proposed changes that do
    not yet pass the criteria set for 'next'.
 
  - The tips of 'master' and 'maint' branches will not be rewound to
@@ -76,7 +76,7 @@
    of the cycle.
 
  - Usually 'master' contains all of 'maint' and 'next' contains all
-   of 'master'.  'pu' contains all the topics merged to 'next', but
+   of 'master'.  'seen' contains all the topics merged to 'next', but
    is rebuilt directly on 'master'.
 
  - The tip of 'master' is meant to be more stable than any
@@ -229,12 +229,12 @@
    series?)
 
  - Prepare 'jch' branch, which is used to represent somewhere
-   between 'master' and 'pu' and often is slightly ahead of 'next'.
+   between 'master' and 'seen' and often is slightly ahead of 'next'.
 
-     $ Meta/Reintegrate master..pu >Meta/redo-jch.sh
+     $ Meta/Reintegrate master..seen >Meta/redo-jch.sh
 
    The result is a script that lists topics to be merged in order to
-   rebuild 'pu' as the input to Meta/Reintegrate script.  Remove
+   rebuild 'seen' as the input to Meta/Reintegrate script.  Remove
    later topics that should not be in 'jch' yet.  Add a line that
    consists of '### match next' before the name of the first topic
    in the output that should be in 'jch' but not in 'next' yet.
@@ -291,29 +291,29 @@
    merged to 'master'.  This may lose '### match next' marker;
    add it again to the appropriate place when it happens.
 
- - Rebuild 'pu'.
+ - Rebuild 'seen'.
 
-     $ Meta/Reintegrate master..pu >Meta/redo-pu.sh
+     $ Meta/Reintegrate master..seen >Meta/redo-seen.sh
 
-   Edit the result by adding new topics that are not still in 'pu'
+   Edit the result by adding new topics that are not still in 'seen'
    in the script.  Then
 
-     $ git checkout -B pu jch
-     $ sh Meta/redo-pu.sh
+     $ git checkout -B seen jch
+     $ sh Meta/redo-seen.sh
 
-   When all is well, clean up the redo-pu.sh script with
+   When all is well, clean up the redo-seen.sh script with
 
-     $ sh Meta/redo-pu.sh -u
+     $ sh Meta/redo-seen.sh -u
 
    Double check by running
 
-     $ git branch --no-merged pu
+     $ git branch --no-merged seen
 
    to see there is no unexpected leftover topics.
 
    At this point, build-test the result for semantic conflicts, and
    if there are, prepare an appropriate merge-fix first (see
-   appendix), and rebuild the 'pu' branch from scratch, starting at
+   appendix), and rebuild the 'seen' branch from scratch, starting at
    the tip of 'jch'.
 
  - Update "What's cooking" message to review the updates to
@@ -323,14 +323,14 @@
 
      $ Meta/cook
 
-   This script inspects the history between master..pu, finds tips
+   This script inspects the history between master..seen, finds tips
    of topic branches, compares what it found with the current
    contents in Meta/whats-cooking.txt, and updates that file.
-   Topics not listed in the file but are found in master..pu are
+   Topics not listed in the file but are found in master..seen are
    added to the "New topics" section, topics listed in the file that
-   are no longer found in master..pu are moved to the "Graduated to
+   are no longer found in master..seen are moved to the "Graduated to
    master" section, and topics whose commits changed their states
-   (e.g. used to be only in 'pu', now merged to 'next') are updated
+   (e.g. used to be only in 'seen', now merged to 'next') are updated
    with change markers "<<" and ">>".
 
    Look for lines enclosed in "<<" and ">>"; they hold contents from
@@ -360,7 +360,7 @@
 Some observations to be made.
 
  * Each topic is tested individually, and also together with other
-   topics cooking first in 'pu', then in 'jch' and then in 'next'.
+   topics cooking first in 'seen', then in 'jch' and then in 'next'.
    Until it matures, no part of it is merged to 'master'.
 
  * A topic already in 'next' can get fixes while still in
@@ -411,7 +411,7 @@
 are merged together, the reference to the variable newly added by
 the latter topic will still use the old name in the result.
 
-The Meta/Reintegrate script that is used by redo-jch and redo-pu
+The Meta/Reintegrate script that is used by redo-jch and redo-seen
 scripts implements a crude but usable way to work this issue around.
 When the script merges branch $X, it checks if "refs/merge-fix/$X"
 exists, and if so, the effect of it is squashed into the result of
@@ -431,14 +431,14 @@
 correct semantic conflicts.
 
 After finding that the result of merging branch "ai/topic" to an
-integration branch had such a semantic conflict, say pu~4, check the
+integration branch had such a semantic conflict, say seen~4, check the
 problematic merge out on a detached HEAD, edit the working tree to
 fix the semantic conflict, and make a separate commit to record the
 fix-up:
 
-     $ git checkout pu~4
+     $ git checkout seen~4
      $ git show -s --pretty=%s ;# double check
-     Merge branch 'ai/topic' to pu
+     Merge branch 'ai/topic' to seen
      $ edit
      $ git commit -m 'merge-fix/ai/topic' -a
 
@@ -450,9 +450,9 @@
 Then double check the result by asking Meta/Reintegrate to redo the
 merge:
 
-     $ git checkout pu~5 ;# the parent of the problem merge
+     $ git checkout seen~5 ;# the parent of the problem merge
      $ echo ai/topic | Meta/Reintegrate
-     $ git diff pu~4
+     $ git diff seen~4
 
 This time, because you prepared refs/merge-fix/ai/topic, the
 resulting merge should have been tweaked to include the fix for the
@@ -464,7 +464,7 @@
 to the integration branch changed the underlying assumption ai/topic
 branch made (e.g. ai/topic branch added a site to refer to a
 variable, while the other branch renamed that variable and adjusted
-existing use sites), and if you changed redo-jch (or redo-pu) script
+existing use sites), and if you changed redo-jch (or redo-seen) script
 to merge ai/topic branch before the other branch, then the above
 merge-fix should not be applied while merging ai/topic, but should
 instead be applied while merging the other branch.  You would need
diff --git a/Documentation/howto/rebase-from-internal-branch.txt b/Documentation/howto/rebase-from-internal-branch.txt
index 02cb5f7..f2e10a7 100644
--- a/Documentation/howto/rebase-from-internal-branch.txt
+++ b/Documentation/howto/rebase-from-internal-branch.txt
@@ -4,7 +4,7 @@
 Subject: Re: sending changesets from the middle of a git tree
 Date:	Sun, 14 Aug 2005 18:37:39 -0700
 Abstract: In this article, JC talks about how he rebases the
- public "pu" branch using the core Git tools when he updates
+ public "seen" branch using the core Git tools when he updates
  the "master" branch, and how "rebase" works.  Also discussed
  is how this applies to individual developers who sends patches
  upstream.
@@ -20,8 +20,8 @@
 > where Junio C Hamano <junkio@cox.net> told me that...
 >> Linus Torvalds <torvalds@osdl.org> writes:
 >>
->> > Junio, maybe you want to talk about how you move patches from your "pu"
->> > branch to the real branches.
+>> > Junio, maybe you want to talk about how you move patches from your
+>> > "seen" branch to the real branches.
 >>
 > Actually, wouldn't this be also precisely for what StGIT is intended to?
 --------------------------------------
@@ -33,12 +33,12 @@
 I just have done a simpler one, this time using only the core
 Git tools.
 
-I had a handful of commits that were ahead of master in pu, and I
+I had a handful of commits that were ahead of master in 'seen', and I
 wanted to add some documentation bypassing my usual habit of
-placing new things in pu first.  At the beginning, the commit
+placing new things in 'seen' first.  At the beginning, the commit
 ancestry graph looked like this:
 
-                             *"pu" head
+			     *"seen" head
     master --> #1 --> #2 --> #3
 
 So I started from master, made a bunch of edits, and committed:
@@ -50,7 +50,7 @@
 
 After the commit, the ancestry graph would look like this:
 
-                              *"pu" head
+			      *"seen" head
     master^ --> #1 --> #2 --> #3
           \
             \---> master
@@ -58,31 +58,31 @@
 The old master is now master^ (the first parent of the master).
 The new master commit holds my documentation updates.
 
-Now I have to deal with "pu" branch.
+Now I have to deal with "seen" branch.
 
 This is the kind of situation I used to have all the time when
 Linus was the maintainer and I was a contributor, when you look
-at "master" branch being the "maintainer" branch, and "pu"
+at "master" branch being the "maintainer" branch, and "seen"
 branch being the "contributor" branch.  Your work started at the
 tip of the "maintainer" branch some time ago, you made a lot of
 progress in the meantime, and now the maintainer branch has some
 other commits you do not have yet.  And "git rebase" was written
 with the explicit purpose of helping to maintain branches like
-"pu".  You _could_ merge master to pu and keep going, but if you
+"seen".  You _could_ merge master to 'seen' and keep going, but if you
 eventually want to cherrypick and merge some but not necessarily
 all changes back to the master branch, it often makes later
 operations for _you_ easier if you rebase (i.e. carry forward
-your changes) "pu" rather than merge.  So I ran "git rebase":
+your changes) "seen" rather than merge.  So I ran "git rebase":
 
-    $ git checkout pu
-    $ git rebase master pu
+    $ git checkout seen
+    $ git rebase master seen
 
 What this does is to pick all the commits since the current
-branch (note that I now am on "pu" branch) forked from the
+branch (note that I now am on "seen" branch) forked from the
 master branch, and forward port these changes.
 
     master^ --> #1 --> #2 --> #3
-          \                                  *"pu" head
+	  \                                  *"seen" head
             \---> master --> #1' --> #2' --> #3'
 
 The diff between master^ and #1 is applied to master and
@@ -92,7 +92,7 @@
 
 Old #3 is not recorded in any of the .git/refs/heads/ file
 anymore, so after doing this you will have dangling commit if
-you ran fsck-cache, which is normal.  After testing "pu", you
+you ran fsck-cache, which is normal.  After testing "seen", you
 can run "git prune" to get rid of those original three commits.
 
 While I am talking about "git rebase", I should talk about how
diff --git a/Documentation/howto/revert-branch-rebase.txt b/Documentation/howto/revert-branch-rebase.txt
index 149508e..a3e5595 100644
--- a/Documentation/howto/revert-branch-rebase.txt
+++ b/Documentation/howto/revert-branch-rebase.txt
@@ -15,7 +15,7 @@
 break building Git with GCC 2.95.  While they were well-intentioned
 portability fixes, keeping things working with gcc-2.95 was also
 important.  Here is what I did to revert the change in the 'master'
-branch and to adjust the 'pu' branch, using core Git tools and
+branch and to adjust the 'seen' branch, using core Git tools and
 barebone Porcelain.
 
 First, prepare a throw-away branch in case I screw things up.
@@ -104,11 +104,11 @@
 
 says nothing.
 
-Then we rebase the 'pu' branch as usual.
+Then we rebase the 'seen' branch as usual.
 
 ------------------------------------------------
-$ git checkout pu
-$ git tag pu-anchor pu
+$ git checkout seen
+$ git tag seen-anchor seen
 $ git rebase master
 * Applying: Redo "revert" using three-way merge machinery.
 First trying simple merge strategy to cherry-pick.
@@ -127,11 +127,11 @@
 First trying simple merge strategy to cherry-pick.
 ------------------------------------------------
 
-The temporary tag 'pu-anchor' is me just being careful, in case 'git
+The temporary tag 'seen-anchor' is me just being careful, in case 'git
 rebase' screws up.  After this, I can do these for sanity check:
 
 ------------------------------------------------
-$ git diff pu-anchor..pu ;# make sure we got the master fix.
+$ git diff seen-anchor..seen ;# make sure we got the master fix.
 $ make CC=gcc-2.95 clean test ;# make sure it fixed the breakage.
 $ make clean test ;# make sure it did not cause other breakage.
 ------------------------------------------------
@@ -140,7 +140,7 @@
 or tag anymore, so remove them:
 
 ------------------------------------------------
-$ rm -f .git/refs/tags/pu-anchor
+$ rm -f .git/refs/tags/seen-anchor
 $ git branch -d revert-c99
 ------------------------------------------------
 
@@ -168,18 +168,18 @@
 And the final repository status looks like this:
 
 ------------------------------------------------
-$ git show-branch --more=1 master pu rc
+$ git show-branch --more=1 master seen rc
 ! [master] Revert "Replace zero-length array decls with []."
- ! [pu] git-repack: Add option to repack all objects.
+ ! [seen] git-repack: Add option to repack all objects.
   * [rc] Merge refs/heads/master from .
 ---
- +  [pu] git-repack: Add option to repack all objects.
- +  [pu~1] More documentation updates.
- +  [pu~2] Show commits in topo order and name all commits.
- +  [pu~3] mailinfo and applymbox updates
- +  [pu~4] Document "git cherry-pick" and "git revert"
- +  [pu~5] Remove git-apply-patch-script.
- +  [pu~6] Redo "revert" using three-way merge machinery.
+ +  [seen] git-repack: Add option to repack all objects.
+ +  [seen~1] More documentation updates.
+ +  [seen~2] Show commits in topo order and name all commits.
+ +  [seen~3] mailinfo and applymbox updates
+ +  [seen~4] Document "git cherry-pick" and "git revert"
+ +  [seen~5] Remove git-apply-patch-script.
+ +  [seen~6] Redo "revert" using three-way merge machinery.
   - [rc] Merge refs/heads/master from .
 ++* [master] Revert "Replace zero-length array decls with []."
   - [rc~1] Merge refs/heads/master from .
diff --git a/Documentation/howto/update-hook-example.txt b/Documentation/howto/update-hook-example.txt
index 89821ec..151ee84 100644
--- a/Documentation/howto/update-hook-example.txt
+++ b/Documentation/howto/update-hook-example.txt
@@ -179,7 +179,7 @@
 whom.  The format of each file would look like this:
 
     refs/heads/master   junio
-    +refs/heads/pu      junio
+    +refs/heads/seen    junio
     refs/heads/cogito$  pasky
     refs/heads/bw/.*    linus
     refs/heads/tmp/.*   .*
@@ -187,6 +187,6 @@
 
 With this, Linus can push or create "bw/penguin" or "bw/zebra"
 or "bw/panda" branches, Pasky can do only "cogito", and JC can
-do master and pu branches and make versioned tags.  And anybody
-can do tmp/blah branches. The '+' sign at the pu record means
+do master and "seen" branches and make versioned tags.  And anybody
+can do tmp/blah branches. The '+' sign at the "seen" record means
 that JC can make non-fast-forward pushes on it.
diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
index 547a552..84bbc74 100644
--- a/Documentation/pretty-formats.txt
+++ b/Documentation/pretty-formats.txt
@@ -196,8 +196,8 @@
 '%ce':: committer email
 '%cE':: committer email (respecting .mailmap, see
 	linkgit:git-shortlog[1] or linkgit:git-blame[1])
-'%cl':: author email local-part (the part before the '@' sign)
-'%cL':: author local-part (see '%cl') respecting .mailmap, see
+'%cl':: committer email local-part (the part before the '@' sign)
+'%cL':: committer local-part (see '%cl') respecting .mailmap, see
 	linkgit:git-shortlog[1] or linkgit:git-blame[1])
 '%cd':: committer date (format respects --date= option)
 '%cD':: committer date, RFC2822 style
diff --git a/Documentation/rev-list-description.txt b/Documentation/rev-list-description.txt
new file mode 100644
index 0000000..a9efa7f
--- /dev/null
+++ b/Documentation/rev-list-description.txt
@@ -0,0 +1,61 @@
+List commits that are reachable by following the `parent` links from the
+given commit(s), but exclude commits that are reachable from the one(s)
+given with a '{caret}' in front of them.  The output is given in reverse
+chronological order by default.
+
+You can think of this as a set operation. Commits reachable from any of
+the commits given on the command line form a set, and then commits reachable
+from any of the ones given with '{caret}' in front are subtracted from that
+set.  The remaining commits are what comes out in the command's output.
+Various other options and paths parameters can be used to further limit the
+result.
+
+Thus, the following command:
+
+ifdef::git-rev-list[]
+-----------------------------------------------------------------------
+$ git rev-list foo bar ^baz
+-----------------------------------------------------------------------
+endif::git-rev-list[]
+ifdef::git-log[]
+-----------------------------------------------------------------------
+$ git log foo bar ^baz
+-----------------------------------------------------------------------
+endif::git-log[]
+
+means "list all the commits which are reachable from 'foo' or 'bar', but
+not from 'baz'".
+
+A special notation "'<commit1>'..'<commit2>'" can be used as a
+short-hand for "^'<commit1>' '<commit2>'". For example, either of
+the following may be used interchangeably:
+
+ifdef::git-rev-list[]
+-----------------------------------------------------------------------
+$ git rev-list origin..HEAD
+$ git rev-list HEAD ^origin
+-----------------------------------------------------------------------
+endif::git-rev-list[]
+ifdef::git-log[]
+-----------------------------------------------------------------------
+$ git log origin..HEAD
+$ git log HEAD ^origin
+-----------------------------------------------------------------------
+endif::git-log[]
+
+Another special notation is "'<commit1>'...'<commit2>'" which is useful
+for merges.  The resulting set of commits is the symmetric difference
+between the two operands.  The following two commands are equivalent:
+
+ifdef::git-rev-list[]
+-----------------------------------------------------------------------
+$ git rev-list A B --not $(git merge-base --all A B)
+$ git rev-list A...B
+-----------------------------------------------------------------------
+endif::git-rev-list[]
+ifdef::git-log[]
+-----------------------------------------------------------------------
+$ git log A B --not $(git merge-base --all A B)
+$ git log A...B
+-----------------------------------------------------------------------
+endif::git-log[]
diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index 1ad9506..d9169c0 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -254,6 +254,9 @@
 previous section, means the set of commits `reachable` from the given
 commit.
 
+Specifying several revisions means the set of commits reachable from
+any of the given commits.
+
 A commit's reachable set is the commit itself and the commits in
 its ancestry chain.
 
diff --git a/Documentation/technical/commit-graph-format.txt b/Documentation/technical/commit-graph-format.txt
index 1beef17..4405410 100644
--- a/Documentation/technical/commit-graph-format.txt
+++ b/Documentation/technical/commit-graph-format.txt
@@ -32,7 +32,7 @@
 of the body. The header includes certain values, such as number of chunks
 and hash type.
 
-All 4-byte numbers are in network order.
+All multi-byte numbers are in network byte order.
 
 HEADER:
 
diff --git a/Documentation/technical/protocol-capabilities.txt b/Documentation/technical/protocol-capabilities.txt
index 2b267c0..36ccd14 100644
--- a/Documentation/technical/protocol-capabilities.txt
+++ b/Documentation/technical/protocol-capabilities.txt
@@ -176,6 +176,21 @@
 purposes, and MUST NOT be used to programmatically assume the presence
 or absence of particular features.
 
+object-format
+-------------
+
+This capability, which takes a hash algorithm as an argument, indicates
+that the server supports the given hash algorithms.  It may be sent
+multiple times; if so, the first one given is the one used in the ref
+advertisement.
+
+When provided by the client, this indicates that it intends to use the
+given hash algorithm to communicate.  The algorithm provided must be one
+that the server supports.
+
+If this capability is not provided, it is assumed that the only
+supported algorithm is SHA-1.
+
 symref
 ------
 
diff --git a/Documentation/technical/protocol-v2.txt b/Documentation/technical/protocol-v2.txt
index 5852f49..e597b74 100644
--- a/Documentation/technical/protocol-v2.txt
+++ b/Documentation/technical/protocol-v2.txt
@@ -483,3 +483,12 @@
 a request.
 
 The provided options must not contain a NUL or LF character.
+
+ object-format
+~~~~~~~~~~~~~~~
+
+The server can advertise the `object-format` capability with a value `X` (in the
+form `object-format=X`) to notify the client that the server is able to deal
+with objects using hash algorithm X.  If not specified, the server is assumed to
+only handle SHA-1.  If the client would like to use a hash algorithm other than
+SHA-1, it should specify its object-format string.
diff --git a/Documentation/user-manual.txt b/Documentation/user-manual.txt
index 8336529..fd480b8 100644
--- a/Documentation/user-manual.txt
+++ b/Documentation/user-manual.txt
@@ -347,7 +347,7 @@
   origin/man
   origin/master
   origin/next
-  origin/pu
+  origin/seen
   origin/todo
 ------------------------------------------------
 
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 7b0cfeb..9db2f4f 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 GVF=GIT-VERSION-FILE
-DEF_VER=v2.27.GIT
+DEF_VER=v2.28.0
 
 LF='
 '
diff --git a/RelNotes b/RelNotes
index a7b4f6d..9143650 120000
--- a/RelNotes
+++ b/RelNotes
@@ -1 +1 @@
-Documentation/RelNotes/2.28.0.txt
\ No newline at end of file
+Documentation/RelNotes/2.29.0.txt
\ No newline at end of file
diff --git a/add-patch.c b/add-patch.c
index f899389..a1d66c1 100644
--- a/add-patch.c
+++ b/add-patch.c
@@ -1203,7 +1203,7 @@
 	for (;;) {
 		int res = edit_hunk_manually(s, hunk);
 		if (res == 0) {
-			/* abandonded */
+			/* abandoned */
 			*hunk = backup;
 			return -1;
 		}
diff --git a/alloc.c b/alloc.c
index 1c64c4d..957a0af 100644
--- a/alloc.c
+++ b/alloc.c
@@ -99,23 +99,27 @@
 	return obj;
 }
 
-static unsigned int alloc_commit_index(struct repository *r)
+/*
+ * The returned count is to be used as an index into commit slabs,
+ * that are *NOT* maintained per repository, and that is why a single
+ * global counter is used.
+ */
+static unsigned int alloc_commit_index(void)
 {
-	return r->parsed_objects->commit_count++;
+	static unsigned int parsed_commits_count;
+	return parsed_commits_count++;
 }
 
-void init_commit_node(struct repository *r, struct commit *c)
+void init_commit_node(struct commit *c)
 {
 	c->object.type = OBJ_COMMIT;
-	c->index = alloc_commit_index(r);
-	c->graph_pos = COMMIT_NOT_FROM_GRAPH;
-	c->generation = GENERATION_NUMBER_INFINITY;
+	c->index = alloc_commit_index();
 }
 
 void *alloc_commit_node(struct repository *r)
 {
 	struct commit *c = alloc_node(r->parsed_objects->commit_state, sizeof(struct commit));
-	init_commit_node(r, c);
+	init_commit_node(c);
 	return c;
 }
 
diff --git a/alloc.h b/alloc.h
index ed1071c..371d388 100644
--- a/alloc.h
+++ b/alloc.h
@@ -9,7 +9,7 @@
 
 void *alloc_blob_node(struct repository *r);
 void *alloc_tree_node(struct repository *r);
-void init_commit_node(struct repository *r, struct commit *c);
+void init_commit_node(struct commit *c);
 void *alloc_commit_node(struct repository *r);
 void *alloc_tag_node(struct repository *r);
 void *alloc_object_node(struct repository *r);
diff --git a/blame.c b/blame.c
index da7e288..82fa16d 100644
--- a/blame.c
+++ b/blame.c
@@ -1272,7 +1272,7 @@
 	if (!bd)
 		return 1;
 
-	if (origin->commit->generation == GENERATION_NUMBER_INFINITY)
+	if (commit_graph_generation(origin->commit) == GENERATION_NUMBER_INFINITY)
 		return 1;
 
 	filter = get_bloom_filter(r, origin->commit, 0);
diff --git a/blob.c b/blob.c
index 36f9abd..182718a 100644
--- a/blob.c
+++ b/blob.c
@@ -10,7 +10,7 @@
 	struct object *obj = lookup_object(r, oid);
 	if (!obj)
 		return create_object(r, oid, alloc_blob_node(r));
-	return object_as_type(r, obj, OBJ_BLOB, 0);
+	return object_as_type(obj, OBJ_BLOB, 0);
 }
 
 int parse_blob_buffer(struct blob *item, void *buffer, unsigned long size)
diff --git a/bloom.c b/bloom.c
index 6c76118..1a57322 100644
--- a/bloom.c
+++ b/bloom.c
@@ -33,15 +33,16 @@
 					struct commit *c)
 {
 	uint32_t lex_pos, start_index, end_index;
+	uint32_t graph_pos = commit_graph_position(c);
 
-	while (c->graph_pos < g->num_commits_in_base)
+	while (graph_pos < g->num_commits_in_base)
 		g = g->base_graph;
 
 	/* The commit graph commit 'c' lives in doesn't carry bloom filters. */
 	if (!g->chunk_bloom_indexes)
 		return 0;
 
-	lex_pos = c->graph_pos - g->num_commits_in_base;
+	lex_pos = graph_pos - g->num_commits_in_base;
 
 	end_index = get_be32(g->chunk_bloom_indexes + 4 * lex_pos);
 
@@ -186,24 +187,22 @@
 	struct diff_options diffopt;
 	int max_changes = 512;
 
-	if (bloom_filters.slab_size == 0)
+	if (!bloom_filters.slab_size)
 		return NULL;
 
 	filter = bloom_filter_slab_at(&bloom_filters, c);
 
 	if (!filter->data) {
 		load_commit_graph_info(r, c);
-		if (c->graph_pos != COMMIT_NOT_FROM_GRAPH &&
-			r->objects->commit_graph->chunk_bloom_indexes) {
-			if (load_bloom_filter_from_graph(r->objects->commit_graph, filter, c))
-				return filter;
-			else
-				return NULL;
-		}
+		if (commit_graph_position(c) != COMMIT_NOT_FROM_GRAPH &&
+			r->objects->commit_graph->chunk_bloom_indexes)
+			load_bloom_filter_from_graph(r->objects->commit_graph, filter, c);
 	}
 
-	if (filter->data || !compute_if_not_present)
+	if (filter->data)
 		return filter;
+	if (!compute_if_not_present)
+		return NULL;
 
 	repo_diff_setup(r, &diffopt);
 	diffopt.flags.recursive = 1;
diff --git a/branch.c b/branch.c
index 2d9e767..7095f78 100644
--- a/branch.c
+++ b/branch.c
@@ -370,7 +370,7 @@
 				      const char *logmsg)
 {
 	int ret = 0;
-	struct worktree **worktrees = get_worktrees(0);
+	struct worktree **worktrees = get_worktrees();
 	int i;
 
 	for (i = 0; worktrees[i]; i++) {
diff --git a/builtin/branch.c b/builtin/branch.c
index 99633ad..e82301f 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -468,7 +468,7 @@
 
 static void reject_rebase_or_bisect_branch(const char *target)
 {
-	struct worktree **worktrees = get_worktrees(0);
+	struct worktree **worktrees = get_worktrees();
 	int i;
 
 	for (i = 0; worktrees[i]; i++) {
diff --git a/builtin/cat-file.c b/builtin/cat-file.c
index ae18e20..5ebf133 100644
--- a/builtin/cat-file.c
+++ b/builtin/cat-file.c
@@ -596,7 +596,7 @@
 
 static const char * const cat_file_usage[] = {
 	N_("git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -p | <type> | --textconv | --filters) [--path=<path>] <object>"),
-	N_("git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --filters]"),
+	N_("git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-symlinks] [--textconv | --filters]"),
 	NULL
 };
 
diff --git a/builtin/clone.c b/builtin/clone.c
index 2a8e3aa..a9f3312 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -946,7 +946,7 @@
 	int is_bundle = 0, is_local;
 	const char *repo_name, *repo, *work_tree, *git_dir;
 	char *path, *dir, *display_repo = NULL;
-	int dest_exists;
+	int dest_exists, real_dest_exists = 0;
 	const struct ref *refs, *remote_head;
 	const struct ref *remote_head_points_at;
 	const struct ref *our_head_points_at;
@@ -1021,6 +1021,14 @@
 		die(_("destination path '%s' already exists and is not "
 			"an empty directory."), dir);
 
+	if (real_git_dir) {
+		real_dest_exists = path_exists(real_git_dir);
+		if (real_dest_exists && !is_empty_dir(real_git_dir))
+			die(_("repository path '%s' already exists and is not "
+				"an empty directory."), real_git_dir);
+	}
+
+
 	strbuf_addf(&reflog_msg, "clone: from %s",
 		    display_repo ? display_repo : repo);
 	free(display_repo);
@@ -1057,7 +1065,7 @@
 	}
 
 	if (real_git_dir) {
-		if (path_exists(real_git_dir))
+		if (real_dest_exists)
 			junk_git_dir_flags |= REMOVE_DIR_KEEP_TOPLEVEL;
 		junk_git_dir = real_git_dir;
 	} else {
@@ -1111,7 +1119,8 @@
 		}
 	}
 
-	init_db(git_dir, real_git_dir, option_template, GIT_HASH_UNKNOWN, INIT_DB_QUIET);
+	init_db(git_dir, real_git_dir, option_template, GIT_HASH_UNKNOWN, NULL,
+		INIT_DB_QUIET);
 
 	if (real_git_dir)
 		git_dir = real_git_dir;
@@ -1220,6 +1229,15 @@
 	refs = transport_get_remote_refs(transport, &ref_prefixes);
 
 	if (refs) {
+		int hash_algo = hash_algo_by_ptr(transport_get_hash_algo(transport));
+
+		/*
+		 * Now that we know what algorithm the remote side is using,
+		 * let's set ours to the same thing.
+		 */
+		initialize_repository_version(hash_algo);
+		repo_set_hash_algo(the_repository, hash_algo);
+
 		mapped_refs = wanted_peer_refs(refs, &remote->fetch);
 		/*
 		 * transport_get_remote_refs() may return refs with null sha-1
@@ -1266,9 +1284,13 @@
 		remote_head_points_at = NULL;
 		remote_head = NULL;
 		option_no_checkout = 1;
-		if (!option_bare)
-			install_branch_config(0, "master", option_origin,
-					      "refs/heads/master");
+		if (!option_bare) {
+			const char *branch = git_default_branch_name();
+			char *ref = xstrfmt("refs/heads/%s", branch);
+
+			install_branch_config(0, branch, option_origin, ref);
+			free(ref);
+		}
 	}
 
 	write_refspec_config(src_ref_prefix, our_head_points_at,
diff --git a/builtin/commit-graph.c b/builtin/commit-graph.c
index 75455da..523501f 100644
--- a/builtin/commit-graph.c
+++ b/builtin/commit-graph.c
@@ -154,7 +154,7 @@
 			   NULL, 0);
 	if (!result)
 		return error(_("invalid object: %s"), hash);
-	else if (object_as_type(the_repository, result, OBJ_COMMIT, 1))
+	else if (object_as_type(result, OBJ_COMMIT, 1))
 		oidset_insert(commits, &result->oid);
 
 	display_progress(progress, oidset_size(commits));
@@ -201,6 +201,7 @@
 	};
 
 	opts.progress = isatty(2);
+	opts.enable_changed_paths = -1;
 	split_opts.size_multiple = 2;
 	split_opts.max_commits = 0;
 	split_opts.expire_time = 0;
@@ -221,7 +222,9 @@
 		flags |= COMMIT_GRAPH_WRITE_SPLIT;
 	if (opts.progress)
 		flags |= COMMIT_GRAPH_WRITE_PROGRESS;
-	if (opts.enable_changed_paths ||
+	if (!opts.enable_changed_paths)
+		flags |= COMMIT_GRAPH_NO_WRITE_BLOOM_FILTERS;
+	if (opts.enable_changed_paths == 1 ||
 	    git_env_bool(GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS, 0))
 		flags |= COMMIT_GRAPH_WRITE_BLOOM_FILTERS;
 
@@ -251,7 +254,7 @@
 			}
 		}
 
-
+		stop_progress(&progress);
 	}
 
 	if (write_commit_graph(odb,
@@ -264,8 +267,6 @@
 cleanup:
 	string_list_clear(&pack_indexes, 0);
 	strbuf_release(&buf);
-	if (progress)
-		stop_progress(&progress);
 	return result;
 }
 
diff --git a/builtin/config.c b/builtin/config.c
index ee4aef6..5e39f61 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -672,7 +672,7 @@
 		given_config_source.file = git_pathdup("config");
 		given_config_source.scope = CONFIG_SCOPE_LOCAL;
 	} else if (use_worktree_config) {
-		struct worktree **worktrees = get_worktrees(0);
+		struct worktree **worktrees = get_worktrees();
 		if (repository_format_worktree_config)
 			given_config_source.file = git_pathdup("config.worktree");
 		else if (worktrees[0] && worktrees[1])
diff --git a/builtin/diff.c b/builtin/diff.c
index 8c36da0..cb98811 100644
--- a/builtin/diff.c
+++ b/builtin/diff.c
@@ -355,9 +355,9 @@
 
 	sym->left = rev->pending.objects[lpos].name;
 	sym->right = rev->pending.objects[rpos].name;
-	sym->base = rev->pending.objects[basepos].name;
 	if (basecount == 0)
 		die(_("%s...%s: no merge base"), sym->left, sym->right);
+	sym->base = rev->pending.objects[basepos].name;
 	bitmap_unset(map, basepos);	/* unmark the base we want */
 	sym->warn = basecount > 1;
 	sym->skip = map;
diff --git a/builtin/fast-export.c b/builtin/fast-export.c
index 8586816..9f37895 100644
--- a/builtin/fast-export.c
+++ b/builtin/fast-export.c
@@ -45,6 +45,7 @@
 static struct string_list tag_refs = STRING_LIST_INIT_NODUP;
 static struct refspec refspecs = REFSPEC_INIT_FETCH;
 static int anonymize;
+static struct hashmap anonymized_seeds;
 static struct revision_sources revision_sources;
 
 static int parse_opt_signed_tag_mode(const struct option *opt,
@@ -120,24 +121,33 @@
 
 struct anonymized_entry {
 	struct hashmap_entry hash;
+	const char *anon;
+	const char orig[FLEX_ARRAY];
+};
+
+struct anonymized_entry_key {
+	struct hashmap_entry hash;
 	const char *orig;
 	size_t orig_len;
-	const char *anon;
-	size_t anon_len;
 };
 
 static int anonymized_entry_cmp(const void *unused_cmp_data,
 				const struct hashmap_entry *eptr,
 				const struct hashmap_entry *entry_or_key,
-				const void *unused_keydata)
+				const void *keydata)
 {
 	const struct anonymized_entry *a, *b;
 
 	a = container_of(eptr, const struct anonymized_entry, hash);
-	b = container_of(entry_or_key, const struct anonymized_entry, hash);
+	if (keydata) {
+		const struct anonymized_entry_key *key = keydata;
+		int equal = !strncmp(a->orig, key->orig, key->orig_len) &&
+			    !a->orig[key->orig_len];
+		return !equal;
+	}
 
-	return a->orig_len != b->orig_len ||
-		memcmp(a->orig, b->orig, a->orig_len);
+	b = container_of(entry_or_key, const struct anonymized_entry, hash);
+	return strcmp(a->orig, b->orig);
 }
 
 /*
@@ -145,31 +155,39 @@
  * the same anonymized string with another. The actual generation
  * is farmed out to the generate function.
  */
-static const void *anonymize_mem(struct hashmap *map,
-				 void *(*generate)(const void *, size_t *),
-				 const void *orig, size_t *len)
+static const char *anonymize_str(struct hashmap *map,
+				 char *(*generate)(void *),
+				 const char *orig, size_t len,
+				 void *data)
 {
-	struct anonymized_entry key, *ret;
+	struct anonymized_entry_key key;
+	struct anonymized_entry *ret;
 
 	if (!map->cmpfn)
 		hashmap_init(map, anonymized_entry_cmp, NULL, 0);
 
-	hashmap_entry_init(&key.hash, memhash(orig, *len));
+	hashmap_entry_init(&key.hash, memhash(orig, len));
 	key.orig = orig;
-	key.orig_len = *len;
-	ret = hashmap_get_entry(map, &key, hash, NULL);
+	key.orig_len = len;
 
+	/* First check if it's a token the user configured manually... */
+	if (anonymized_seeds.cmpfn)
+		ret = hashmap_get_entry(&anonymized_seeds, &key, hash, &key);
+	else
+		ret = NULL;
+
+	/* ...otherwise check if we've already seen it in this context... */
+	if (!ret)
+		ret = hashmap_get_entry(map, &key, hash, &key);
+
+	/* ...and finally generate a new mapping if necessary */
 	if (!ret) {
-		ret = xmalloc(sizeof(*ret));
+		FLEX_ALLOC_MEM(ret, orig, orig, len);
 		hashmap_entry_init(&ret->hash, key.hash.hash);
-		ret->orig = xstrdup(orig);
-		ret->orig_len = *len;
-		ret->anon = generate(orig, len);
-		ret->anon_len = *len;
+		ret->anon = generate(data);
 		hashmap_put(map, &ret->hash);
 	}
 
-	*len = ret->anon_len;
 	return ret->anon;
 }
 
@@ -181,13 +199,13 @@
  */
 static void anonymize_path(struct strbuf *out, const char *path,
 			   struct hashmap *map,
-			   void *(*generate)(const void *, size_t *))
+			   char *(*generate)(void *))
 {
 	while (*path) {
 		const char *end_of_component = strchrnul(path, '/');
 		size_t len = end_of_component - path;
-		const char *c = anonymize_mem(map, generate, path, &len);
-		strbuf_add(out, c, len);
+		const char *c = anonymize_str(map, generate, path, len, NULL);
+		strbuf_addstr(out, c);
 		path = end_of_component;
 		if (*path)
 			strbuf_addch(out, *path++);
@@ -361,12 +379,12 @@
 		printf("%s", path);
 }
 
-static void *anonymize_path_component(const void *path, size_t *len)
+static char *anonymize_path_component(void *data)
 {
 	static int counter;
 	struct strbuf out = STRBUF_INIT;
 	strbuf_addf(&out, "path%d", counter++);
-	return strbuf_detach(&out, len);
+	return strbuf_detach(&out, NULL);
 }
 
 static void print_path(const char *path)
@@ -383,20 +401,23 @@
 	}
 }
 
-static void *generate_fake_oid(const void *old, size_t *len)
+static char *generate_fake_oid(void *data)
 {
 	static uint32_t counter = 1; /* avoid null oid */
 	const unsigned hashsz = the_hash_algo->rawsz;
-	unsigned char *out = xcalloc(hashsz, 1);
+	unsigned char out[GIT_MAX_RAWSZ];
+	char *hex = xmallocz(GIT_MAX_HEXSZ);
+
+	hashclr(out);
 	put_be32(out + hashsz - 4, counter++);
-	return out;
+	return hash_to_hex_algop_r(hex, out, the_hash_algo);
 }
 
-static const struct object_id *anonymize_oid(const struct object_id *oid)
+static const char *anonymize_oid(const char *oid_hex)
 {
 	static struct hashmap objs;
-	size_t len = the_hash_algo->rawsz;
-	return anonymize_mem(&objs, generate_fake_oid, oid, &len);
+	size_t len = strlen(oid_hex);
+	return anonymize_str(&objs, generate_fake_oid, oid_hex, len, NULL);
 }
 
 static void show_filemodify(struct diff_queue_struct *q,
@@ -455,9 +476,9 @@
 			 */
 			if (no_data || S_ISGITLINK(spec->mode))
 				printf("M %06o %s ", spec->mode,
-				       oid_to_hex(anonymize ?
-						  anonymize_oid(&spec->oid) :
-						  &spec->oid));
+				       anonymize ?
+				       anonymize_oid(oid_to_hex(&spec->oid)) :
+				       oid_to_hex(&spec->oid));
 			else {
 				struct object *object = lookup_object(the_repository,
 								      &spec->oid);
@@ -493,12 +514,12 @@
 	return bol;
 }
 
-static void *anonymize_ref_component(const void *old, size_t *len)
+static char *anonymize_ref_component(void *data)
 {
 	static int counter;
 	struct strbuf out = STRBUF_INIT;
 	strbuf_addf(&out, "ref%d", counter++);
-	return strbuf_detach(&out, len);
+	return strbuf_detach(&out, NULL);
 }
 
 static const char *anonymize_refname(const char *refname)
@@ -517,13 +538,6 @@
 	static struct strbuf anon = STRBUF_INIT;
 	int i;
 
-	/*
-	 * We also leave "master" as a special case, since it does not reveal
-	 * anything interesting.
-	 */
-	if (!strcmp(refname, "refs/heads/master"))
-		return refname;
-
 	strbuf_reset(&anon);
 	for (i = 0; i < ARRAY_SIZE(prefixes); i++) {
 		if (skip_prefix(refname, prefixes[i], &refname)) {
@@ -546,14 +560,13 @@
 	return xstrfmt("subject %d\n\nbody\n", counter++);
 }
 
-static struct hashmap idents;
-static void *anonymize_ident(const void *old, size_t *len)
+static char *anonymize_ident(void *data)
 {
 	static int counter;
 	struct strbuf out = STRBUF_INIT;
 	strbuf_addf(&out, "User %d <user%d@example.com>", counter, counter);
 	counter++;
-	return strbuf_detach(&out, len);
+	return strbuf_detach(&out, NULL);
 }
 
 /*
@@ -563,6 +576,7 @@
  */
 static void anonymize_ident_line(const char **beg, const char **end)
 {
+	static struct hashmap idents;
 	static struct strbuf buffers[] = { STRBUF_INIT, STRBUF_INIT };
 	static unsigned which_buffer;
 
@@ -588,9 +602,9 @@
 		size_t len;
 
 		len = split.mail_end - split.name_begin;
-		ident = anonymize_mem(&idents, anonymize_ident,
-				      split.name_begin, &len);
-		strbuf_add(out, ident, len);
+		ident = anonymize_str(&idents, anonymize_ident,
+				      split.name_begin, len, NULL);
+		strbuf_addstr(out, ident);
 		strbuf_addch(out, ' ');
 		strbuf_add(out, split.date_begin, split.tz_end - split.date_begin);
 	} else {
@@ -712,9 +726,10 @@
 		if (mark)
 			printf(":%d\n", mark);
 		else
-			printf("%s\n", oid_to_hex(anonymize ?
-						  anonymize_oid(&obj->oid) :
-						  &obj->oid));
+			printf("%s\n",
+			       anonymize ?
+			       anonymize_oid(oid_to_hex(&obj->oid)) :
+			       oid_to_hex(&obj->oid));
 		i++;
 	}
 
@@ -729,12 +744,12 @@
 	show_progress();
 }
 
-static void *anonymize_tag(const void *old, size_t *len)
+static char *anonymize_tag(void *data)
 {
 	static int counter;
 	struct strbuf out = STRBUF_INIT;
 	strbuf_addf(&out, "tag message %d", counter++);
-	return strbuf_detach(&out, len);
+	return strbuf_detach(&out, NULL);
 }
 
 static void handle_tail(struct object_array *commits, struct rev_info *revs,
@@ -804,8 +819,8 @@
 		name = anonymize_refname(name);
 		if (message) {
 			static struct hashmap tags;
-			message = anonymize_mem(&tags, anonymize_tag,
-						message, &message_size);
+			message = anonymize_str(&tags, anonymize_tag,
+						message, message_size, NULL);
 		}
 	}
 
@@ -1136,6 +1151,37 @@
 	}
 }
 
+static char *anonymize_seed(void *data)
+{
+	return xstrdup(data);
+}
+
+static int parse_opt_anonymize_map(const struct option *opt,
+				   const char *arg, int unset)
+{
+	struct hashmap *map = opt->value;
+	const char *delim, *value;
+	size_t keylen;
+
+	BUG_ON_OPT_NEG(unset);
+
+	delim = strchr(arg, ':');
+	if (delim) {
+		keylen = delim - arg;
+		value = delim + 1;
+	} else {
+		keylen = strlen(arg);
+		value = arg;
+	}
+
+	if (!keylen || !*value)
+		return error(_("--anonymize-map token cannot be empty"));
+
+	anonymize_str(map, anonymize_seed, arg, keylen, (void *)value);
+
+	return 0;
+}
+
 int cmd_fast_export(int argc, const char **argv, const char *prefix)
 {
 	struct rev_info revs;
@@ -1177,6 +1223,9 @@
 		OPT_STRING_LIST(0, "refspec", &refspecs_list, N_("refspec"),
 			     N_("Apply refspec to exported refs")),
 		OPT_BOOL(0, "anonymize", &anonymize, N_("anonymize output")),
+		OPT_CALLBACK_F(0, "anonymize-map", &anonymized_seeds, N_("from:to"),
+			       N_("convert <from> to <to> in anonymized output"),
+			       PARSE_OPT_NONEG, parse_opt_anonymize_map),
 		OPT_BOOL(0, "reference-excluded-parents",
 			 &reference_excluded_commits, N_("Reference parents which are not in fast-export stream by object id")),
 		OPT_BOOL(0, "show-original-ids", &show_original_ids,
@@ -1204,6 +1253,9 @@
 	if (argc > 1)
 		usage_with_options (fast_export_usage, options);
 
+	if (anonymized_seeds.cmpfn && !anonymize)
+		die(_("--anonymize-map without --anonymize does not make sense"));
+
 	if (refspecs_list.nr) {
 		int i;
 
diff --git a/builtin/fsck.c b/builtin/fsck.c
index f02cbdb..37aa07d 100644
--- a/builtin/fsck.c
+++ b/builtin/fsck.c
@@ -241,7 +241,7 @@
 		enum object_type type = oid_object_info(the_repository,
 							&obj->oid, NULL);
 		if (type > 0)
-			object_as_type(the_repository, obj, type, 0);
+			object_as_type(obj, type, 0);
 	}
 
 	options.walk = mark_used;
@@ -577,7 +577,7 @@
 
 	for_each_rawref(fsck_handle_ref, NULL);
 
-	worktrees = get_worktrees(0);
+	worktrees = get_worktrees();
 	for (p = worktrees; *p; p++) {
 		struct worktree *wt = *p;
 		struct strbuf ref = STRBUF_INIT;
diff --git a/builtin/grep.c b/builtin/grep.c
index a5056f3..5975cf5 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -466,7 +466,7 @@
 		struct strbuf base = STRBUF_INIT;
 
 		obj_read_lock();
-		object = parse_object_or_die(oid, oid_to_hex(oid));
+		object = parse_object_or_die(oid, NULL);
 		obj_read_unlock();
 		data = read_object_with_reference(&subrepo,
 						  &object->oid, tree_type,
diff --git a/builtin/index-pack.c b/builtin/index-pack.c
index f176dd2..f865666 100644
--- a/builtin/index-pack.c
+++ b/builtin/index-pack.c
@@ -1555,13 +1555,9 @@
 {
 	const uint32_t *idx1, *idx2;
 	uint32_t i;
-	const uint32_t hashwords = the_hash_algo->rawsz / sizeof(uint32_t);
 
 	/* The address of the 4-byte offset table */
-	idx1 = (((const uint32_t *)p->index_data)
-		+ 2 /* 8-byte header */
-		+ 256 /* fan out */
-		+ hashwords * p->num_objects /* object ID table */
+	idx1 = (((const uint32_t *)((const uint8_t *)p->index_data + p->crc_offset))
 		+ p->num_objects /* CRC32 table */
 		);
 
@@ -1671,6 +1667,7 @@
 	unsigned char pack_hash[GIT_MAX_RAWSZ];
 	unsigned foreign_nr = 1;	/* zero is a "good" value, assume bad */
 	int report_end_of_input = 0;
+	int hash_algo = 0;
 
 	/*
 	 * index-pack never needs to fetch missing objects except when
@@ -1764,6 +1761,11 @@
 					die(_("bad %s"), arg);
 			} else if (skip_prefix(arg, "--max-input-size=", &arg)) {
 				max_input_size = strtoumax(arg, NULL, 10);
+			} else if (skip_prefix(arg, "--object-format=", &arg)) {
+				hash_algo = hash_algo_by_name(arg);
+				if (hash_algo == GIT_HASH_UNKNOWN)
+					die(_("unknown hash algorithm '%s'"), arg);
+				repo_set_hash_algo(the_repository, hash_algo);
 			} else
 				usage(index_pack_usage);
 			continue;
@@ -1780,6 +1782,8 @@
 		die(_("--fix-thin cannot be used without --stdin"));
 	if (from_stdin && !startup_info->have_repository)
 		die(_("--stdin requires a git repository"));
+	if (from_stdin && hash_algo)
+		die(_("--object-format cannot be used with --stdin"));
 	if (!index_name && pack_name)
 		index_name = derive_filename(pack_name, "idx", &index_name_buf);
 
diff --git a/builtin/init-db.c b/builtin/init-db.c
index 0b7222e..cee6482 100644
--- a/builtin/init-db.c
+++ b/builtin/init-db.c
@@ -203,6 +203,7 @@
 
 static int create_default_files(const char *template_path,
 				const char *original_git_dir,
+				const char *initial_branch,
 				const struct repository_format *fmt)
 {
 	struct stat st1;
@@ -258,15 +259,26 @@
 		die("failed to set up refs db: %s", err.buf);
 
 	/*
-	 * Create the default symlink from ".git/HEAD" to the "master"
-	 * branch, if it does not exist yet.
+	 * Point the HEAD symref to the initial branch with if HEAD does
+	 * not yet exist.
 	 */
 	path = git_path_buf(&buf, "HEAD");
 	reinit = (!access(path, R_OK)
 		  || readlink(path, junk, sizeof(junk)-1) != -1);
 	if (!reinit) {
-		if (create_symref("HEAD", "refs/heads/master", NULL) < 0)
+		char *ref;
+
+		if (!initial_branch)
+			initial_branch = git_default_branch_name();
+
+		ref = xstrfmt("refs/heads/%s", initial_branch);
+		if (check_refname_format(ref, 0) < 0)
+			die(_("invalid initial branch name: '%s'"),
+			    initial_branch);
+
+		if (create_symref("HEAD", ref, NULL) < 0)
 			exit(1);
+		free(ref);
 	}
 
 	initialize_repository_version(fmt->hash_algo);
@@ -383,7 +395,8 @@
 }
 
 int init_db(const char *git_dir, const char *real_git_dir,
-	    const char *template_dir, int hash, unsigned int flags)
+	    const char *template_dir, int hash, const char *initial_branch,
+	    unsigned int flags)
 {
 	int reinit;
 	int exist_ok = flags & INIT_DB_EXIST_OK;
@@ -425,7 +438,11 @@
 
 	validate_hash_algorithm(&repo_fmt, hash);
 
-	reinit = create_default_files(template_dir, original_git_dir, &repo_fmt);
+	reinit = create_default_files(template_dir, original_git_dir,
+				      initial_branch, &repo_fmt);
+	if (reinit && initial_branch)
+		warning(_("re-init: ignored --initial-branch=%s"),
+			initial_branch);
 
 	create_object_directory();
 
@@ -528,6 +545,7 @@
 	const char *template_dir = NULL;
 	unsigned int flags = 0;
 	const char *object_format = NULL;
+	const char *initial_branch = NULL;
 	int hash_algo = GIT_HASH_UNKNOWN;
 	const struct option init_db_options[] = {
 		OPT_STRING(0, "template", &template_dir, N_("template-directory"),
@@ -541,6 +559,8 @@
 		OPT_BIT('q', "quiet", &flags, N_("be quiet"), INIT_DB_QUIET),
 		OPT_STRING(0, "separate-git-dir", &real_git_dir, N_("gitdir"),
 			   N_("separate git dir from working tree")),
+		OPT_STRING('b', "initial-branch", &initial_branch, N_("name"),
+			   N_("override the name of the initial branch")),
 		OPT_STRING(0, "object-format", &object_format, N_("hash"),
 			   N_("specify the hash algorithm to use")),
 		OPT_END()
@@ -652,5 +672,6 @@
 	UNLEAK(work_tree);
 
 	flags |= INIT_DB_EXIST_OK;
-	return init_db(git_dir, real_git_dir, template_dir, hash_algo, flags);
+	return init_db(git_dir, real_git_dir, template_dir, hash_algo,
+		       initial_branch, flags);
 }
diff --git a/builtin/ls-remote.c b/builtin/ls-remote.c
index 6ef5195..3a4dd12 100644
--- a/builtin/ls-remote.c
+++ b/builtin/ls-remote.c
@@ -118,6 +118,10 @@
 		transport->server_options = &server_options;
 
 	ref = transport_get_remote_refs(transport, &ref_prefixes);
+	if (ref) {
+		int hash_algo = hash_algo_by_ptr(transport_get_hash_algo(transport));
+		repo_set_hash_algo(the_repository, hash_algo);
+	}
 	if (transport_disconnect(transport)) {
 		UNLEAK(sorting);
 		return 1;
diff --git a/builtin/mv.c b/builtin/mv.c
index be15ba7..7dac714 100644
--- a/builtin/mv.c
+++ b/builtin/mv.c
@@ -132,6 +132,7 @@
 	struct stat st;
 	struct string_list src_for_dst = STRING_LIST_INIT_NODUP;
 	struct lock_file lock_file = LOCK_INIT;
+	struct cache_entry *ce;
 
 	git_config(git_default_config, NULL);
 
@@ -220,9 +221,11 @@
 				}
 				argc += last - first;
 			}
-		} else if (cache_name_pos(src, length) < 0)
+		} else if (!(ce = cache_file_exists(src, length, ignore_case))) {
 			bad = _("not under version control");
-		else if (lstat(dst, &st) == 0 &&
+		} else if (ce_stage(ce)) {
+			bad = _("conflicted");
+		} else if (lstat(dst, &st) == 0 &&
 			 (!ignore_case || strcasecmp(src, dst))) {
 			bad = _("destination exists");
 			if (force) {
diff --git a/builtin/pull.c b/builtin/pull.c
index 8e6572d..8159c5d 100644
--- a/builtin/pull.c
+++ b/builtin/pull.c
@@ -1025,7 +1025,8 @@
 			commit_list_insert(head, &list);
 			merge_head = lookup_commit_reference(the_repository,
 							     &merge_heads.oid[0]);
-			if (is_descendant_of(merge_head, list)) {
+			if (repo_is_descendant_of(the_repository,
+						  merge_head, list)) {
 				/* we can fast-forward this without invoking rebase */
 				opt_ff = "--ff-only";
 				ran_ff = 1;
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index ea3d0f0..d43663b 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -249,6 +249,7 @@
 			strbuf_addf(&cap, " push-cert=%s", push_cert_nonce);
 		if (advertise_push_options)
 			strbuf_addstr(&cap, " push-options");
+		strbuf_addf(&cap, " object-format=%s", the_hash_algo->name);
 		strbuf_addf(&cap, " agent=%s", git_user_agent_sanitized());
 		packet_write_fmt(1, "%s %s%c%s\n",
 			     oid_to_hex(oid), path, 0, cap.buf);
@@ -1624,6 +1625,8 @@
 		linelen = strlen(reader->line);
 		if (linelen < reader->pktlen) {
 			const char *feature_list = reader->line + linelen + 1;
+			const char *hash = NULL;
+			int len = 0;
 			if (parse_feature_request(feature_list, "report-status"))
 				report_status = 1;
 			if (parse_feature_request(feature_list, "side-band-64k"))
@@ -1636,6 +1639,13 @@
 			if (advertise_push_options
 			    && parse_feature_request(feature_list, "push-options"))
 				use_push_options = 1;
+			hash = parse_feature_value(feature_list, "object-format", &len, NULL);
+			if (!hash) {
+				hash = hash_algos[GIT_HASH_SHA1].name;
+				len = strlen(hash);
+			}
+			if (xstrncmpz(the_hash_algo->name, hash, len))
+				die("error: unsupported object format '%s'", hash);
 		}
 
 		if (!strcmp(reader->line, "push-cert")) {
diff --git a/builtin/reflog.c b/builtin/reflog.c
index 52ecf6d..ca1d807 100644
--- a/builtin/reflog.c
+++ b/builtin/reflog.c
@@ -615,7 +615,7 @@
 		int i;
 
 		memset(&collected, 0, sizeof(collected));
-		worktrees = get_worktrees(0);
+		worktrees = get_worktrees();
 		for (p = worktrees; *p; p++) {
 			if (!all_worktrees && !(*p)->is_current)
 				continue;
diff --git a/builtin/show-index.c b/builtin/show-index.c
index 0826f6a..8106b03 100644
--- a/builtin/show-index.c
+++ b/builtin/show-index.c
@@ -1,9 +1,12 @@
 #include "builtin.h"
 #include "cache.h"
 #include "pack.h"
+#include "parse-options.h"
 
-static const char show_index_usage[] =
-"git show-index";
+static const char *const show_index_usage[] = {
+	"git show-index [--object-format=<hash-algorithm>]",
+	NULL
+};
 
 int cmd_show_index(int argc, const char **argv, const char *prefix)
 {
@@ -11,10 +14,26 @@
 	unsigned nr;
 	unsigned int version;
 	static unsigned int top_index[256];
-	const unsigned hashsz = the_hash_algo->rawsz;
+	unsigned hashsz;
+	const char *hash_name = NULL;
+	int hash_algo;
+	const struct option show_index_options[] = {
+		OPT_STRING(0, "object-format", &hash_name, N_("hash-algorithm"),
+			   N_("specify the hash algorithm to use")),
+		OPT_END()
+	};
 
-	if (argc != 1)
-		usage(show_index_usage);
+	argc = parse_options(argc, argv, prefix, show_index_options, show_index_usage, 0);
+
+	if (hash_name) {
+		hash_algo = hash_algo_by_name(hash_name);
+		if (hash_algo == GIT_HASH_UNKNOWN)
+			die(_("Unknown hash algorithm"));
+		repo_set_hash_algo(the_repository, hash_algo);
+	}
+
+	hashsz = the_hash_algo->rawsz;
+
 	if (fread(top_index, 2 * 4, 1, stdin) != 1)
 		die("unable to read header");
 	if (top_index[0] == htonl(PACK_IDX_SIGNATURE)) {
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 59c1e12..a1c7560 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -1981,7 +1981,7 @@
 	free(key);
 
 	if (!branch)
-		return "master";
+		return "HEAD";
 
 	if (!strcmp(branch, ".")) {
 		const char *refname = resolve_ref_unsafe("HEAD", 0, NULL, NULL);
diff --git a/builtin/worktree.c b/builtin/worktree.c
index 1238b6b..f0cbdef 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -325,7 +325,7 @@
 	struct strbuf sb_name = STRBUF_INIT;
 	struct worktree **worktrees;
 
-	worktrees = get_worktrees(0);
+	worktrees = get_worktrees();
 	check_candidate_path(path, opts->force, worktrees, "add");
 	free_worktrees(worktrees);
 	worktrees = NULL;
@@ -697,6 +697,23 @@
 	}
 }
 
+static int pathcmp(const void *a_, const void *b_)
+{
+	const struct worktree *const *a = a_;
+	const struct worktree *const *b = b_;
+	return fspathcmp((*a)->path, (*b)->path);
+}
+
+static void pathsort(struct worktree **wt)
+{
+	int n = 0;
+	struct worktree **p = wt;
+
+	while (*p++)
+		n++;
+	QSORT(wt, n, pathcmp);
+}
+
 static int list(int ac, const char **av, const char *prefix)
 {
 	int porcelain = 0;
@@ -710,9 +727,12 @@
 	if (ac)
 		usage_with_options(worktree_usage, options);
 	else {
-		struct worktree **worktrees = get_worktrees(GWT_SORT_LINKED);
+		struct worktree **worktrees = get_worktrees();
 		int path_maxlen = 0, abbrev = DEFAULT_ABBREV, i;
 
+		/* sort worktrees by path but keep main worktree at top */
+		pathsort(worktrees + 1);
+
 		if (!porcelain)
 			measure_widths(worktrees, &abbrev, &path_maxlen);
 
@@ -741,7 +761,7 @@
 	if (ac != 1)
 		usage_with_options(worktree_usage, options);
 
-	worktrees = get_worktrees(0);
+	worktrees = get_worktrees();
 	wt = find_worktree(worktrees, prefix, av[0]);
 	if (!wt)
 		die(_("'%s' is not a working tree"), av[0]);
@@ -774,7 +794,7 @@
 	if (ac != 1)
 		usage_with_options(worktree_usage, options);
 
-	worktrees = get_worktrees(0);
+	worktrees = get_worktrees();
 	wt = find_worktree(worktrees, prefix, av[0]);
 	if (!wt)
 		die(_("'%s' is not a working tree"), av[0]);
@@ -848,7 +868,7 @@
 	strbuf_addstr(&dst, path);
 	free(path);
 
-	worktrees = get_worktrees(0);
+	worktrees = get_worktrees();
 	wt = find_worktree(worktrees, prefix, av[0]);
 	if (!wt)
 		die(_("'%s' is not a working tree"), av[0]);
@@ -974,7 +994,7 @@
 	if (ac != 1)
 		usage_with_options(worktree_usage, options);
 
-	worktrees = get_worktrees(0);
+	worktrees = get_worktrees();
 	wt = find_worktree(worktrees, prefix, av[0]);
 	if (!wt)
 		die(_("'%s' is not a working tree"), av[0]);
diff --git a/bundle.c b/bundle.c
index 99439e0..2a0d744 100644
--- a/bundle.c
+++ b/bundle.c
@@ -23,6 +23,17 @@
 	list->nr++;
 }
 
+static const struct git_hash_algo *detect_hash_algo(struct strbuf *buf)
+{
+	size_t len = strcspn(buf->buf, " \n");
+	int algo;
+
+	algo = hash_algo_by_length(len / 2);
+	if (algo == GIT_HASH_UNKNOWN)
+		return NULL;
+	return &hash_algos[algo];
+}
+
 static int parse_bundle_header(int fd, struct bundle_header *header,
 			       const char *report_path)
 {
@@ -52,12 +63,21 @@
 		}
 		strbuf_rtrim(&buf);
 
+		if (!header->hash_algo) {
+			header->hash_algo = detect_hash_algo(&buf);
+			if (!header->hash_algo) {
+				error(_("unknown hash algorithm length"));
+				status = -1;
+				break;
+			}
+		}
+
 		/*
 		 * Tip lines have object name, SP, and refname.
 		 * Prerequisites have object name that is optionally
 		 * followed by SP and subject line.
 		 */
-		if (parse_oid_hex(buf.buf, &oid, &p) ||
+		if (parse_oid_hex_algop(buf.buf, &oid, &p, header->hash_algo) ||
 		    (*p && !isspace(*p)) ||
 		    (!is_prereq && !*p)) {
 			if (report_path)
diff --git a/bundle.h b/bundle.h
index ceab0c7..2dc9442 100644
--- a/bundle.h
+++ b/bundle.h
@@ -15,6 +15,7 @@
 struct bundle_header {
 	struct ref_list prerequisites;
 	struct ref_list references;
+	const struct git_hash_algo *hash_algo;
 };
 
 int is_bundle(const char *path, int quiet);
diff --git a/cache.h b/cache.h
index e5885cc..0290849 100644
--- a/cache.h
+++ b/cache.h
@@ -628,7 +628,7 @@
 
 int init_db(const char *git_dir, const char *real_git_dir,
 	    const char *template_dir, int hash_algo,
-	    unsigned int flags);
+	    const char *initial_branch, unsigned int flags);
 void initialize_repository_version(int hash_algo);
 
 void sanitize_stdfds(void);
@@ -1042,9 +1042,9 @@
 	int worktree_config;
 	int is_bare;
 	int hash_algo;
-	int has_extensions;
 	char *work_tree;
 	struct string_list unknown_extensions;
+	struct string_list v1_only_extensions;
 };
 
 /*
@@ -1058,6 +1058,7 @@
 	.is_bare = -1, \
 	.hash_algo = GIT_HASH_SHA1, \
 	.unknown_extensions = STRING_LIST_INIT_DUP, \
+	.v1_only_extensions = STRING_LIST_INIT_DUP, \
 }
 
 /*
diff --git a/ci/lib.sh b/ci/lib.sh
index ff24c54..3eefec5 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -184,9 +184,9 @@
 	if [ "$jobname" = linux-gcc ]
 	then
 		export CC=gcc-8
-		MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python3)"
+		MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python3"
 	else
-		MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
+		MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python2"
 	fi
 
 	export GIT_TEST_HTTPD=true
diff --git a/column.c b/column.c
index 4a38eed..a58969b 100644
--- a/column.c
+++ b/column.c
@@ -107,7 +107,7 @@
 		printf("%s%s%s", indent, list->items[i].string, nl);
 }
 
-/* Print a cell to stdout with all necessary leading/traling space */
+/* Print a cell to stdout with all necessary leading/trailing space */
 static int display_cell(struct column_data *data, int initial_width,
 			const char *empty_cell, int x, int y)
 {
diff --git a/command-list.txt b/command-list.txt
index cbb960c..89aa60c 100644
--- a/command-list.txt
+++ b/command-list.txt
@@ -136,7 +136,7 @@
 git-pack-refs                           ancillarymanipulators
 git-parse-remote                        synchelpers
 git-patch-id                            purehelpers
-git-prune                               ancillarymanipulators
+git-prune                               ancillarymanipulators   complete
 git-prune-packed                        plumbingmanipulators
 git-pull                                mainporcelain           remote
 git-push                                mainporcelain           remote
diff --git a/commit-graph.c b/commit-graph.c
index 2ff042f..e51c91d 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -1,7 +1,5 @@
-#include "cache.h"
-#include "config.h"
-#include "dir.h"
 #include "git-compat-util.h"
+#include "config.h"
 #include "lockfile.h"
 #include "pack.h"
 #include "packfile.h"
@@ -19,6 +17,8 @@
 #include "bloom.h"
 #include "commit-slab.h"
 #include "shallow.h"
+#include "json-writer.h"
+#include "trace2.h"
 
 void git_test_write_commit_graph_or_die(void)
 {
@@ -87,15 +87,69 @@
 	       commit_pos_at(&commit_pos, b);
 }
 
+define_commit_slab(commit_graph_data_slab, struct commit_graph_data);
+static struct commit_graph_data_slab commit_graph_data_slab =
+	COMMIT_SLAB_INIT(1, commit_graph_data_slab);
+
+uint32_t commit_graph_position(const struct commit *c)
+{
+	struct commit_graph_data *data =
+		commit_graph_data_slab_peek(&commit_graph_data_slab, c);
+
+	return data ? data->graph_pos : COMMIT_NOT_FROM_GRAPH;
+}
+
+uint32_t commit_graph_generation(const struct commit *c)
+{
+	struct commit_graph_data *data =
+		commit_graph_data_slab_peek(&commit_graph_data_slab, c);
+
+	if (!data)
+		return GENERATION_NUMBER_INFINITY;
+	else if (data->graph_pos == COMMIT_NOT_FROM_GRAPH)
+		return GENERATION_NUMBER_INFINITY;
+
+	return data->generation;
+}
+
+static struct commit_graph_data *commit_graph_data_at(const struct commit *c)
+{
+	unsigned int i, nth_slab;
+	struct commit_graph_data *data =
+		commit_graph_data_slab_peek(&commit_graph_data_slab, c);
+
+	if (data)
+		return data;
+
+	nth_slab = c->index / commit_graph_data_slab.slab_size;
+	data = commit_graph_data_slab_at(&commit_graph_data_slab, c);
+
+	/*
+	 * commit-slab initializes elements with zero, overwrite this with
+	 * COMMIT_NOT_FROM_GRAPH for graph_pos.
+	 *
+	 * We avoid initializing generation with checking if graph position
+	 * is not COMMIT_NOT_FROM_GRAPH.
+	 */
+	for (i = 0; i < commit_graph_data_slab.slab_size; i++) {
+		commit_graph_data_slab.slab[nth_slab][i].graph_pos =
+			COMMIT_NOT_FROM_GRAPH;
+	}
+
+	return data;
+}
+
 static int commit_gen_cmp(const void *va, const void *vb)
 {
 	const struct commit *a = *(const struct commit **)va;
 	const struct commit *b = *(const struct commit **)vb;
 
+	uint32_t generation_a = commit_graph_generation(a);
+	uint32_t generation_b = commit_graph_generation(b);
 	/* lower generation commits first */
-	if (a->generation < b->generation)
+	if (generation_a < generation_b)
 		return -1;
-	else if (a->generation > b->generation)
+	else if (generation_a > generation_b)
 		return 1;
 
 	/* use date as a heuristic when generations are equal */
@@ -149,7 +203,8 @@
 	}
 
 	prepare_commit_graft(r);
-	if (r->parsed_objects && r->parsed_objects->grafts_nr)
+	if (r->parsed_objects &&
+	    (r->parsed_objects->grafts_nr || r->parsed_objects->substituted_parent))
 		return 0;
 	if (is_repository_shallow(r))
 		return 0;
@@ -230,8 +285,7 @@
 	const unsigned char *data, *chunk_lookup;
 	uint32_t i;
 	struct commit_graph *graph;
-	uint64_t last_chunk_offset;
-	uint32_t last_chunk_id;
+	uint64_t next_chunk_offset;
 	uint32_t graph_signature;
 	unsigned char graph_version, hash_version;
 
@@ -271,24 +325,26 @@
 	graph->data = graph_map;
 	graph->data_len = graph_size;
 
-	last_chunk_id = 0;
-	last_chunk_offset = 8;
+	if (graph_size < GRAPH_HEADER_SIZE +
+			 (graph->num_chunks + 1) * GRAPH_CHUNKLOOKUP_WIDTH +
+			 GRAPH_FANOUT_SIZE + the_hash_algo->rawsz) {
+		error(_("commit-graph file is too small to hold %u chunks"),
+		      graph->num_chunks);
+		free(graph);
+		return NULL;
+	}
+
 	chunk_lookup = data + 8;
+	next_chunk_offset = get_be64(chunk_lookup + 4);
 	for (i = 0; i < graph->num_chunks; i++) {
 		uint32_t chunk_id;
-		uint64_t chunk_offset;
+		uint64_t chunk_offset = next_chunk_offset;
 		int chunk_repeated = 0;
 
-		if (data + graph_size - chunk_lookup <
-		    GRAPH_CHUNKLOOKUP_WIDTH) {
-			error(_("commit-graph chunk lookup table entry missing; file may be incomplete"));
-			goto free_and_return;
-		}
-
 		chunk_id = get_be32(chunk_lookup + 0);
-		chunk_offset = get_be64(chunk_lookup + 4);
 
 		chunk_lookup += GRAPH_CHUNKLOOKUP_WIDTH;
+		next_chunk_offset = get_be64(chunk_lookup + 4);
 
 		if (chunk_offset > graph_size - the_hash_algo->rawsz) {
 			error(_("commit-graph improper chunk offset %08x%08x"), (uint32_t)(chunk_offset >> 32),
@@ -307,8 +363,11 @@
 		case GRAPH_CHUNKID_OIDLOOKUP:
 			if (graph->chunk_oid_lookup)
 				chunk_repeated = 1;
-			else
+			else {
 				graph->chunk_oid_lookup = data + chunk_offset;
+				graph->num_commits = (next_chunk_offset - chunk_offset)
+						     / graph->hash_len;
+			}
 			break;
 
 		case GRAPH_CHUNKID_DATA:
@@ -362,15 +421,6 @@
 			error(_("commit-graph chunk id %08x appears multiple times"), chunk_id);
 			goto free_and_return;
 		}
-
-		if (last_chunk_id == GRAPH_CHUNKID_OIDLOOKUP)
-		{
-			graph->num_commits = (chunk_offset - last_chunk_offset)
-					     / graph->hash_len;
-		}
-
-		last_chunk_id = chunk_id;
-		last_chunk_offset = chunk_offset;
 	}
 
 	if (graph->chunk_bloom_indexes && graph->chunk_bloom_data) {
@@ -569,10 +619,6 @@
 		return !!r->objects->commit_graph;
 	r->objects->commit_graph_attempted = 1;
 
-	if (git_env_bool(GIT_TEST_COMMIT_GRAPH_DIE_ON_LOAD, 0))
-		die("dying as requested by the '%s' variable on commit-graph load!",
-		    GIT_TEST_COMMIT_GRAPH_DIE_ON_LOAD);
-
 	prepare_repo_settings(r);
 
 	if (!git_env_bool(GIT_TEST_COMMIT_GRAPH, 0) &&
@@ -670,13 +716,14 @@
 	c = lookup_commit(r, &oid);
 	if (!c)
 		die(_("could not find commit %s"), oid_to_hex(&oid));
-	c->graph_pos = pos;
+	commit_graph_data_at(c)->graph_pos = pos;
 	return &commit_list_insert(c, pptr)->next;
 }
 
 static void fill_commit_graph_info(struct commit *item, struct commit_graph *g, uint32_t pos)
 {
 	const unsigned char *commit_data;
+	struct commit_graph_data *graph_data;
 	uint32_t lex_index;
 
 	while (pos < g->num_commits_in_base)
@@ -684,8 +731,10 @@
 
 	lex_index = pos - g->num_commits_in_base;
 	commit_data = g->chunk_commit_data + GRAPH_DATA_WIDTH * lex_index;
-	item->graph_pos = pos;
-	item->generation = get_be32(commit_data + g->hash_len + 8) >> 2;
+
+	graph_data = commit_graph_data_at(item);
+	graph_data->graph_pos = pos;
+	graph_data->generation = get_be32(commit_data + g->hash_len + 8) >> 2;
 }
 
 static inline void set_commit_tree(struct commit *c, struct tree *t)
@@ -701,6 +750,7 @@
 	uint32_t *parent_data_ptr;
 	uint64_t date_low, date_high;
 	struct commit_list **pptr;
+	struct commit_graph_data *graph_data;
 	const unsigned char *commit_data;
 	uint32_t lex_index;
 
@@ -714,7 +764,8 @@
 	 * Store the "full" position, but then use the
 	 * "local" position for the rest of the calculation.
 	 */
-	item->graph_pos = pos;
+	graph_data = commit_graph_data_at(item);
+	graph_data->graph_pos = pos;
 	lex_index = pos - g->num_commits_in_base;
 
 	commit_data = g->chunk_commit_data + (g->hash_len + 16) * lex_index;
@@ -727,7 +778,7 @@
 	date_low = get_be32(commit_data + g->hash_len + 12);
 	item->date = (timestamp_t)((date_high << 32) | date_low);
 
-	item->generation = get_be32(commit_data + g->hash_len + 8) >> 2;
+	graph_data->generation = get_be32(commit_data + g->hash_len + 8) >> 2;
 
 	pptr = &item->parents;
 
@@ -759,8 +810,9 @@
 
 static int find_commit_in_graph(struct commit *item, struct commit_graph *g, uint32_t *pos)
 {
-	if (item->graph_pos != COMMIT_NOT_FROM_GRAPH) {
-		*pos = item->graph_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;
@@ -795,6 +847,14 @@
 
 int parse_commit_in_graph(struct repository *r, struct commit *item)
 {
+	static int checked_env = 0;
+
+	if (!checked_env &&
+	    git_env_bool(GIT_TEST_COMMIT_GRAPH_DIE_ON_PARSE, 0))
+		die("dying as requested by the '%s' variable on commit-graph parse!",
+		    GIT_TEST_COMMIT_GRAPH_DIE_ON_PARSE);
+	checked_env = 1;
+
 	if (!prepare_commit_graph(r))
 		return 0;
 	return parse_commit_in_graph_one(r, r->objects->commit_graph, item);
@@ -815,12 +875,13 @@
 {
 	struct object_id oid;
 	const unsigned char *commit_data;
+	uint32_t graph_pos = commit_graph_position(c);
 
-	while (c->graph_pos < g->num_commits_in_base)
+	while (graph_pos < g->num_commits_in_base)
 		g = g->base_graph;
 
 	commit_data = g->chunk_commit_data +
-			GRAPH_DATA_WIDTH * (c->graph_pos - g->num_commits_in_base);
+			GRAPH_DATA_WIDTH * (graph_pos - g->num_commits_in_base);
 
 	hashcpy(oid.hash, commit_data);
 	set_commit_tree(c, lookup_tree(r, &oid));
@@ -834,7 +895,7 @@
 {
 	if (c->maybe_tree)
 		return c->maybe_tree;
-	if (c->graph_pos == COMMIT_NOT_FROM_GRAPH)
+	if (commit_graph_position(c) == COMMIT_NOT_FROM_GRAPH)
 		BUG("get_commit_tree_in_graph_one called from non-commit-graph commit");
 
 	return load_tree_for_commit(r, g, (struct commit *)c);
@@ -886,10 +947,11 @@
 
 	const struct split_commit_graph_opts *split_opts;
 	size_t total_bloom_filter_data_size;
+	const struct bloom_filter_settings *bloom_settings;
 };
 
-static void write_graph_chunk_fanout(struct hashfile *f,
-				     struct write_commit_graph_context *ctx)
+static int write_graph_chunk_fanout(struct hashfile *f,
+				    struct write_commit_graph_context *ctx)
 {
 	int i, count = 0;
 	struct commit **list = ctx->commits.list;
@@ -910,17 +972,21 @@
 
 		hashwrite_be32(f, count);
 	}
+
+	return 0;
 }
 
-static void write_graph_chunk_oids(struct hashfile *f, int hash_len,
-				   struct write_commit_graph_context *ctx)
+static int write_graph_chunk_oids(struct hashfile *f,
+				  struct write_commit_graph_context *ctx)
 {
 	struct commit **list = ctx->commits.list;
 	int count;
 	for (count = 0; count < ctx->commits.nr; count++, list++) {
 		display_progress(ctx->progress, ++ctx->progress_cnt);
-		hashwrite(f, (*list)->object.oid.hash, (int)hash_len);
+		hashwrite(f, (*list)->object.oid.hash, the_hash_algo->rawsz);
 	}
+
+	return 0;
 }
 
 static const unsigned char *commit_to_sha1(size_t index, void *table)
@@ -929,8 +995,8 @@
 	return commits[index]->object.oid.hash;
 }
 
-static void write_graph_chunk_data(struct hashfile *f, int hash_len,
-				   struct write_commit_graph_context *ctx)
+static int write_graph_chunk_data(struct hashfile *f,
+				  struct write_commit_graph_context *ctx)
 {
 	struct commit **list = ctx->commits.list;
 	struct commit **last = ctx->commits.list + ctx->commits.nr;
@@ -947,7 +1013,7 @@
 			die(_("unable to parse commit %s"),
 				oid_to_hex(&(*list)->object.oid));
 		tree = get_commit_tree_oid(*list);
-		hashwrite(f, tree->hash, hash_len);
+		hashwrite(f, tree->hash, the_hash_algo->rawsz);
 
 		parent = (*list)->parents;
 
@@ -1020,17 +1086,19 @@
 		else
 			packedDate[0] = 0;
 
-		packedDate[0] |= htonl((*list)->generation << 2);
+		packedDate[0] |= htonl(commit_graph_data_at(*list)->generation << 2);
 
 		packedDate[1] = htonl((*list)->date);
 		hashwrite(f, packedDate, 8);
 
 		list++;
 	}
+
+	return 0;
 }
 
-static void write_graph_chunk_extra_edges(struct hashfile *f,
-					  struct write_commit_graph_context *ctx)
+static int write_graph_chunk_extra_edges(struct hashfile *f,
+					 struct write_commit_graph_context *ctx)
 {
 	struct commit **list = ctx->commits.list;
 	struct commit **last = ctx->commits.list + ctx->commits.nr;
@@ -1079,59 +1147,67 @@
 
 		list++;
 	}
+
+	return 0;
 }
 
-static void write_graph_chunk_bloom_indexes(struct hashfile *f,
-					    struct write_commit_graph_context *ctx)
+static int write_graph_chunk_bloom_indexes(struct hashfile *f,
+					   struct write_commit_graph_context *ctx)
 {
 	struct commit **list = ctx->commits.list;
 	struct commit **last = ctx->commits.list + ctx->commits.nr;
 	uint32_t cur_pos = 0;
-	struct progress *progress = NULL;
-	int i = 0;
-
-	if (ctx->report_progress)
-		progress = start_delayed_progress(
-			_("Writing changed paths Bloom filters index"),
-			ctx->commits.nr);
 
 	while (list < last) {
 		struct bloom_filter *filter = get_bloom_filter(ctx->r, *list, 0);
-		cur_pos += filter->len;
-		display_progress(progress, ++i);
+		size_t len = filter ? filter->len : 0;
+		cur_pos += len;
+		display_progress(ctx->progress, ++ctx->progress_cnt);
 		hashwrite_be32(f, cur_pos);
 		list++;
 	}
 
-	stop_progress(&progress);
+	return 0;
 }
 
-static void write_graph_chunk_bloom_data(struct hashfile *f,
-					 struct write_commit_graph_context *ctx,
-					 const struct bloom_filter_settings *settings)
+static void trace2_bloom_filter_settings(struct write_commit_graph_context *ctx)
+{
+	struct json_writer jw = JSON_WRITER_INIT;
+
+	jw_object_begin(&jw, 0);
+	jw_object_intmax(&jw, "hash_version", ctx->bloom_settings->hash_version);
+	jw_object_intmax(&jw, "num_hashes", ctx->bloom_settings->num_hashes);
+	jw_object_intmax(&jw, "bits_per_entry", ctx->bloom_settings->bits_per_entry);
+	jw_end(&jw);
+
+	trace2_data_json("bloom", ctx->r, "settings", &jw);
+
+	jw_release(&jw);
+}
+
+static int write_graph_chunk_bloom_data(struct hashfile *f,
+					struct write_commit_graph_context *ctx)
 {
 	struct commit **list = ctx->commits.list;
 	struct commit **last = ctx->commits.list + ctx->commits.nr;
-	struct progress *progress = NULL;
-	int i = 0;
 
-	if (ctx->report_progress)
-		progress = start_delayed_progress(
-			_("Writing changed paths Bloom filters data"),
-			ctx->commits.nr);
+	trace2_bloom_filter_settings(ctx);
 
-	hashwrite_be32(f, settings->hash_version);
-	hashwrite_be32(f, settings->num_hashes);
-	hashwrite_be32(f, settings->bits_per_entry);
+	hashwrite_be32(f, ctx->bloom_settings->hash_version);
+	hashwrite_be32(f, ctx->bloom_settings->num_hashes);
+	hashwrite_be32(f, ctx->bloom_settings->bits_per_entry);
 
 	while (list < last) {
 		struct bloom_filter *filter = get_bloom_filter(ctx->r, *list, 0);
-		display_progress(progress, ++i);
-		hashwrite(f, filter->data, filter->len * sizeof(unsigned char));
+		size_t len = filter ? filter->len : 0;
+
+		display_progress(ctx->progress, ++ctx->progress_cnt);
+		if (len)
+			hashwrite(f, filter->data, len * sizeof(unsigned char));
 		list++;
 	}
 
-	stop_progress(&progress);
+	return 0;
 }
 
 static int oid_compare(const void *_a, const void *_b)
@@ -1219,7 +1295,7 @@
 			continue;
 		if (ctx->split) {
 			if ((!parse_commit(commit) &&
-			     commit->graph_pos == COMMIT_NOT_FROM_GRAPH) ||
+			     commit_graph_position(commit) == COMMIT_NOT_FROM_GRAPH) ||
 			    flags == COMMIT_GRAPH_SPLIT_REPLACE)
 				add_missing_parents(ctx, commit);
 		} else if (!parse_commit_no_graph(commit))
@@ -1251,9 +1327,11 @@
 					_("Computing commit graph generation numbers"),
 					ctx->commits.nr);
 	for (i = 0; i < ctx->commits.nr; i++) {
+		uint32_t generation = commit_graph_data_at(ctx->commits.list[i])->generation;
+
 		display_progress(ctx->progress, i + 1);
-		if (ctx->commits.list[i]->generation != GENERATION_NUMBER_INFINITY &&
-		    ctx->commits.list[i]->generation != GENERATION_NUMBER_ZERO)
+		if (generation != GENERATION_NUMBER_INFINITY &&
+		    generation != GENERATION_NUMBER_ZERO)
 			continue;
 
 		commit_list_insert(ctx->commits.list[i], &list);
@@ -1264,22 +1342,26 @@
 			uint32_t max_generation = 0;
 
 			for (parent = current->parents; parent; parent = parent->next) {
-				if (parent->item->generation == GENERATION_NUMBER_INFINITY ||
-				    parent->item->generation == GENERATION_NUMBER_ZERO) {
+				generation = commit_graph_data_at(parent->item)->generation;
+
+				if (generation == GENERATION_NUMBER_INFINITY ||
+				    generation == GENERATION_NUMBER_ZERO) {
 					all_parents_computed = 0;
 					commit_list_insert(parent->item, &list);
 					break;
-				} else if (parent->item->generation > max_generation) {
-					max_generation = parent->item->generation;
+				} else if (generation > max_generation) {
+					max_generation = generation;
 				}
 			}
 
 			if (all_parents_computed) {
-				current->generation = max_generation + 1;
+				struct commit_graph_data *data = commit_graph_data_at(current);
+
+				data->generation = max_generation + 1;
 				pop_commit(&list);
 
-				if (current->generation > GENERATION_NUMBER_MAX)
-					current->generation = GENERATION_NUMBER_MAX;
+				if (data->generation > GENERATION_NUMBER_MAX)
+					data->generation = GENERATION_NUMBER_MAX;
 			}
 		}
 	}
@@ -1355,12 +1437,13 @@
 			_("Collecting referenced commits"), 0);
 
 	for_each_ref(add_ref_to_set, &data);
+
+	stop_progress(&data.progress);
+
 	result = write_commit_graph(odb, NULL, &commits,
 				    flags, split_opts);
 
 	oidset_clear(&commits);
-	if (data.progress)
-		stop_progress(&data.progress);
 	return result;
 }
 
@@ -1458,7 +1541,7 @@
 			if (ctx->split) {
 				struct commit *c = lookup_commit(ctx->r, &ctx->oids.list[i]);
 
-				if (!c || c->graph_pos != COMMIT_NOT_FROM_GRAPH)
+				if (!c || commit_graph_position(c) != COMMIT_NOT_FROM_GRAPH)
 					continue;
 			}
 
@@ -1492,7 +1575,7 @@
 		ctx->commits.list[ctx->commits.nr] = lookup_commit(ctx->r, &ctx->oids.list[i]);
 
 		if (ctx->split && flags != COMMIT_GRAPH_SPLIT_REPLACE &&
-		    ctx->commits.list[ctx->commits.nr]->graph_pos != COMMIT_NOT_FROM_GRAPH)
+		    commit_graph_position(ctx->commits.list[ctx->commits.nr]) != COMMIT_NOT_FROM_GRAPH)
 			continue;
 
 		if (ctx->split && flags == COMMIT_GRAPH_SPLIT_REPLACE)
@@ -1535,19 +1618,36 @@
 	return 0;
 }
 
+typedef int (*chunk_write_fn)(struct hashfile *f,
+			      struct write_commit_graph_context *ctx);
+
+struct chunk_info {
+	uint32_t id;
+	uint64_t size;
+	chunk_write_fn write_fn;
+};
+
 static int write_commit_graph_file(struct write_commit_graph_context *ctx)
 {
 	uint32_t i;
 	int fd;
 	struct hashfile *f;
 	struct lock_file lk = LOCK_INIT;
-	uint32_t chunk_ids[MAX_NUM_CHUNKS + 1];
-	uint64_t chunk_offsets[MAX_NUM_CHUNKS + 1];
+	struct chunk_info chunks[MAX_NUM_CHUNKS + 1];
 	const unsigned hashsz = the_hash_algo->rawsz;
 	struct strbuf progress_title = STRBUF_INIT;
 	int num_chunks = 3;
+	uint64_t chunk_offset;
 	struct object_id file_hash;
-	const struct bloom_filter_settings bloom_settings = DEFAULT_BLOOM_FILTER_SETTINGS;
+	struct bloom_filter_settings bloom_settings = DEFAULT_BLOOM_FILTER_SETTINGS;
+
+	if (!ctx->bloom_settings) {
+		bloom_settings.bits_per_entry = git_env_ulong("GIT_TEST_BLOOM_SETTINGS_BITS_PER_ENTRY",
+							      bloom_settings.bits_per_entry);
+		bloom_settings.num_hashes = git_env_ulong("GIT_TEST_BLOOM_SETTINGS_NUM_HASHES",
+							  bloom_settings.num_hashes);
+		ctx->bloom_settings = &bloom_settings;
+	}
 
 	if (ctx->split) {
 		struct strbuf tmp_file = STRBUF_INIT;
@@ -1593,51 +1693,41 @@
 		f = hashfd(lk.tempfile->fd, lk.tempfile->filename.buf);
 	}
 
-	chunk_ids[0] = GRAPH_CHUNKID_OIDFANOUT;
-	chunk_ids[1] = GRAPH_CHUNKID_OIDLOOKUP;
-	chunk_ids[2] = GRAPH_CHUNKID_DATA;
+	chunks[0].id = GRAPH_CHUNKID_OIDFANOUT;
+	chunks[0].size = GRAPH_FANOUT_SIZE;
+	chunks[0].write_fn = write_graph_chunk_fanout;
+	chunks[1].id = GRAPH_CHUNKID_OIDLOOKUP;
+	chunks[1].size = hashsz * ctx->commits.nr;
+	chunks[1].write_fn = write_graph_chunk_oids;
+	chunks[2].id = GRAPH_CHUNKID_DATA;
+	chunks[2].size = (hashsz + 16) * ctx->commits.nr;
+	chunks[2].write_fn = write_graph_chunk_data;
 	if (ctx->num_extra_edges) {
-		chunk_ids[num_chunks] = GRAPH_CHUNKID_EXTRAEDGES;
+		chunks[num_chunks].id = GRAPH_CHUNKID_EXTRAEDGES;
+		chunks[num_chunks].size = 4 * ctx->num_extra_edges;
+		chunks[num_chunks].write_fn = write_graph_chunk_extra_edges;
 		num_chunks++;
 	}
 	if (ctx->changed_paths) {
-		chunk_ids[num_chunks] = GRAPH_CHUNKID_BLOOMINDEXES;
+		chunks[num_chunks].id = GRAPH_CHUNKID_BLOOMINDEXES;
+		chunks[num_chunks].size = sizeof(uint32_t) * ctx->commits.nr;
+		chunks[num_chunks].write_fn = write_graph_chunk_bloom_indexes;
 		num_chunks++;
-		chunk_ids[num_chunks] = GRAPH_CHUNKID_BLOOMDATA;
+		chunks[num_chunks].id = GRAPH_CHUNKID_BLOOMDATA;
+		chunks[num_chunks].size = sizeof(uint32_t) * 3
+					  + ctx->total_bloom_filter_data_size;
+		chunks[num_chunks].write_fn = write_graph_chunk_bloom_data;
 		num_chunks++;
 	}
 	if (ctx->num_commit_graphs_after > 1) {
-		chunk_ids[num_chunks] = GRAPH_CHUNKID_BASE;
+		chunks[num_chunks].id = GRAPH_CHUNKID_BASE;
+		chunks[num_chunks].size = hashsz * (ctx->num_commit_graphs_after - 1);
+		chunks[num_chunks].write_fn = write_graph_chunk_base;
 		num_chunks++;
 	}
 
-	chunk_ids[num_chunks] = 0;
-
-	chunk_offsets[0] = 8 + (num_chunks + 1) * GRAPH_CHUNKLOOKUP_WIDTH;
-	chunk_offsets[1] = chunk_offsets[0] + GRAPH_FANOUT_SIZE;
-	chunk_offsets[2] = chunk_offsets[1] + hashsz * ctx->commits.nr;
-	chunk_offsets[3] = chunk_offsets[2] + (hashsz + 16) * ctx->commits.nr;
-
-	num_chunks = 3;
-	if (ctx->num_extra_edges) {
-		chunk_offsets[num_chunks + 1] = chunk_offsets[num_chunks] +
-						4 * ctx->num_extra_edges;
-		num_chunks++;
-	}
-	if (ctx->changed_paths) {
-		chunk_offsets[num_chunks + 1] = chunk_offsets[num_chunks] +
-						sizeof(uint32_t) * ctx->commits.nr;
-		num_chunks++;
-
-		chunk_offsets[num_chunks + 1] = chunk_offsets[num_chunks] +
-						sizeof(uint32_t) * 3 + ctx->total_bloom_filter_data_size;
-		num_chunks++;
-	}
-	if (ctx->num_commit_graphs_after > 1) {
-		chunk_offsets[num_chunks + 1] = chunk_offsets[num_chunks] +
-						hashsz * (ctx->num_commit_graphs_after - 1);
-		num_chunks++;
-	}
+	chunks[num_chunks].id = 0;
+	chunks[num_chunks].size = 0;
 
 	hashwrite_be32(f, GRAPH_SIGNATURE);
 
@@ -1646,13 +1736,16 @@
 	hashwrite_u8(f, num_chunks);
 	hashwrite_u8(f, ctx->num_commit_graphs_after - 1);
 
+	chunk_offset = 8 + (num_chunks + 1) * GRAPH_CHUNKLOOKUP_WIDTH;
 	for (i = 0; i <= num_chunks; i++) {
 		uint32_t chunk_write[3];
 
-		chunk_write[0] = htonl(chunk_ids[i]);
-		chunk_write[1] = htonl(chunk_offsets[i] >> 32);
-		chunk_write[2] = htonl(chunk_offsets[i] & 0xffffffff);
+		chunk_write[0] = htonl(chunks[i].id);
+		chunk_write[1] = htonl(chunk_offset >> 32);
+		chunk_write[2] = htonl(chunk_offset & 0xffffffff);
 		hashwrite(f, chunk_write, 12);
+
+		chunk_offset += chunks[i].size;
 	}
 
 	if (ctx->report_progress) {
@@ -1665,19 +1758,19 @@
 			progress_title.buf,
 			num_chunks * ctx->commits.nr);
 	}
-	write_graph_chunk_fanout(f, ctx);
-	write_graph_chunk_oids(f, hashsz, ctx);
-	write_graph_chunk_data(f, hashsz, ctx);
-	if (ctx->num_extra_edges)
-		write_graph_chunk_extra_edges(f, ctx);
-	if (ctx->changed_paths) {
-		write_graph_chunk_bloom_indexes(f, ctx);
-		write_graph_chunk_bloom_data(f, ctx, &bloom_settings);
+
+	for (i = 0; i < num_chunks; i++) {
+		uint64_t start_offset = f->total + f->offset;
+
+		if (chunks[i].write_fn(f, ctx))
+			return -1;
+
+		if (f->total + f->offset != start_offset + chunks[i].size)
+			BUG("expected to write %"PRId64" bytes to chunk %"PRIx32", but wrote %"PRId64" instead",
+			    chunks[i].size, chunks[i].id,
+			    f->total + f->offset - start_offset);
 	}
-	if (ctx->num_commit_graphs_after > 1 &&
-	    write_graph_chunk_base(f, ctx)) {
-		return -1;
-	}
+
 	stop_progress(&ctx->progress);
 	strbuf_release(&progress_title);
 
@@ -2011,9 +2104,23 @@
 	ctx->report_progress = flags & COMMIT_GRAPH_WRITE_PROGRESS ? 1 : 0;
 	ctx->split = flags & COMMIT_GRAPH_WRITE_SPLIT ? 1 : 0;
 	ctx->split_opts = split_opts;
-	ctx->changed_paths = flags & COMMIT_GRAPH_WRITE_BLOOM_FILTERS ? 1 : 0;
 	ctx->total_bloom_filter_data_size = 0;
 
+	if (flags & COMMIT_GRAPH_WRITE_BLOOM_FILTERS)
+		ctx->changed_paths = 1;
+	if (!(flags & COMMIT_GRAPH_NO_WRITE_BLOOM_FILTERS)) {
+		struct commit_graph *g;
+		prepare_commit_graph_one(ctx->r, ctx->odb);
+
+		g = ctx->r->objects->commit_graph;
+
+		/* We have changed-paths already. Keep them in the next graph */
+		if (g && g->chunk_bloom_data) {
+			ctx->changed_paths = 1;
+			ctx->bloom_settings = g->bloom_filter_settings;
+		}
+	}
+
 	if (ctx->split) {
 		struct commit_graph *g;
 		prepare_commit_graph(ctx->r);
@@ -2241,6 +2348,7 @@
 		struct commit *graph_commit, *odb_commit;
 		struct commit_list *graph_parents, *odb_parents;
 		uint32_t max_generation = 0;
+		uint32_t generation;
 
 		display_progress(progress, i + 1);
 		hashcpy(cur_oid.hash, g->chunk_oid_lookup + g->hash_len * i);
@@ -2279,8 +2387,9 @@
 					     oid_to_hex(&graph_parents->item->object.oid),
 					     oid_to_hex(&odb_parents->item->object.oid));
 
-			if (graph_parents->item->generation > max_generation)
-				max_generation = graph_parents->item->generation;
+			generation = commit_graph_generation(graph_parents->item);
+			if (generation > max_generation)
+				max_generation = generation;
 
 			graph_parents = graph_parents->next;
 			odb_parents = odb_parents->next;
@@ -2290,7 +2399,7 @@
 			graph_report(_("commit-graph parent list for commit %s terminates early"),
 				     oid_to_hex(&cur_oid));
 
-		if (!graph_commit->generation) {
+		if (!commit_graph_generation(graph_commit)) {
 			if (generation_zero == GENERATION_NUMBER_EXISTS)
 				graph_report(_("commit-graph has generation number zero for commit %s, but non-zero elsewhere"),
 					     oid_to_hex(&cur_oid));
@@ -2310,10 +2419,11 @@
 		if (max_generation == GENERATION_NUMBER_MAX)
 			max_generation--;
 
-		if (graph_commit->generation != max_generation + 1)
+		generation = commit_graph_generation(graph_commit);
+		if (generation != max_generation + 1)
 			graph_report(_("commit-graph generation for commit %s is %u != %u"),
 				     oid_to_hex(&cur_oid),
-				     graph_commit->generation,
+				     generation,
 				     max_generation + 1);
 
 		if (graph_commit->date != odb_commit->date)
diff --git a/commit-graph.h b/commit-graph.h
index 3ba0da1..09a9703 100644
--- a/commit-graph.h
+++ b/commit-graph.h
@@ -2,14 +2,11 @@
 #define COMMIT_GRAPH_H
 
 #include "git-compat-util.h"
-#include "repository.h"
-#include "string-list.h"
-#include "cache.h"
 #include "object-store.h"
 #include "oidset.h"
 
 #define GIT_TEST_COMMIT_GRAPH "GIT_TEST_COMMIT_GRAPH"
-#define GIT_TEST_COMMIT_GRAPH_DIE_ON_LOAD "GIT_TEST_COMMIT_GRAPH_DIE_ON_LOAD"
+#define GIT_TEST_COMMIT_GRAPH_DIE_ON_PARSE "GIT_TEST_COMMIT_GRAPH_DIE_ON_PARSE"
 #define GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS "GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS"
 
 /*
@@ -23,6 +20,9 @@
 
 struct commit;
 struct bloom_filter_settings;
+struct repository;
+struct raw_object_store;
+struct string_list;
 
 char *get_commit_graph_filename(struct object_directory *odb);
 int open_commit_graph(const char *graph_file, int *fd, struct stat *st);
@@ -92,6 +92,7 @@
 	COMMIT_GRAPH_WRITE_PROGRESS   = (1 << 1),
 	COMMIT_GRAPH_WRITE_SPLIT      = (1 << 2),
 	COMMIT_GRAPH_WRITE_BLOOM_FILTERS = (1 << 3),
+	COMMIT_GRAPH_NO_WRITE_BLOOM_FILTERS = (1 << 4),
 };
 
 enum commit_graph_split_flags {
@@ -135,4 +136,14 @@
  */
 void disable_commit_graph(struct repository *r);
 
+struct commit_graph_data {
+	uint32_t graph_pos;
+	uint32_t generation;
+};
+
+/*
+ * Commits should be parsed before accessing generation, graph positions.
+ */
+uint32_t commit_graph_generation(const struct commit *);
+uint32_t commit_graph_position(const struct commit *);
 #endif
diff --git a/commit-reach.c b/commit-reach.c
index 1761217..efd5925 100644
--- a/commit-reach.c
+++ b/commit-reach.c
@@ -58,14 +58,15 @@
 		struct commit *commit = prio_queue_get(&queue);
 		struct commit_list *parents;
 		int flags;
+		uint32_t generation = commit_graph_generation(commit);
 
-		if (min_generation && commit->generation > last_gen)
+		if (min_generation && generation > last_gen)
 			BUG("bad generation skip %8x > %8x at %s",
-			    commit->generation, last_gen,
+			    generation, last_gen,
 			    oid_to_hex(&commit->object.oid));
-		last_gen = commit->generation;
+		last_gen = generation;
 
-		if (commit->generation < min_generation)
+		if (generation < min_generation)
 			break;
 
 		flags = commit->object.flags & (PARENT1 | PARENT2 | STALE);
@@ -176,18 +177,20 @@
 		repo_parse_commit(r, array[i]);
 	for (i = 0; i < cnt; i++) {
 		struct commit_list *common;
-		uint32_t min_generation = array[i]->generation;
+		uint32_t min_generation = commit_graph_generation(array[i]);
 
 		if (redundant[i])
 			continue;
 		for (j = filled = 0; j < cnt; j++) {
+			uint32_t curr_generation;
 			if (i == j || redundant[j])
 				continue;
 			filled_index[filled] = j;
 			work[filled++] = array[j];
 
-			if (array[j]->generation < min_generation)
-				min_generation = array[j]->generation;
+			curr_generation = commit_graph_generation(array[j]);
+			if (curr_generation < min_generation)
+				min_generation = curr_generation;
 		}
 		common = paint_down_to_common(r, array[i], filled,
 					      work, min_generation);
@@ -283,9 +286,9 @@
 /*
  * Is "commit" a descendant of one of the elements on the "with_commit" list?
  */
-static int repo_is_descendant_of(struct repository *r,
-				 struct commit *commit,
-				 struct commit_list *with_commit)
+int repo_is_descendant_of(struct repository *r,
+			  struct commit *commit,
+			  struct commit_list *with_commit)
 {
 	if (!with_commit)
 		return 1;
@@ -310,11 +313,6 @@
 	}
 }
 
-int is_descendant_of(struct commit *commit, struct commit_list *with_commit)
-{
-	return repo_is_descendant_of(the_repository, commit, with_commit);
-}
-
 /*
  * Is "commit" an ancestor of one of the "references"?
  */
@@ -323,23 +321,26 @@
 {
 	struct commit_list *bases;
 	int ret = 0, i;
-	uint32_t min_generation = GENERATION_NUMBER_INFINITY;
+	uint32_t generation, min_generation = GENERATION_NUMBER_INFINITY;
 
 	if (repo_parse_commit(r, commit))
 		return ret;
 	for (i = 0; i < nr_reference; i++) {
 		if (repo_parse_commit(r, reference[i]))
 			return ret;
-		if (reference[i]->generation < min_generation)
-			min_generation = reference[i]->generation;
+
+		generation = commit_graph_generation(reference[i]);
+		if (generation < min_generation)
+			min_generation = generation;
 	}
 
-	if (commit->generation > min_generation)
+	generation = commit_graph_generation(commit);
+	if (generation > min_generation)
 		return ret;
 
 	bases = paint_down_to_common(r, commit,
 				     nr_reference, reference,
-				     commit->generation);
+				     generation);
 	if (commit->object.flags & PARENT2)
 		ret = 1;
 	clear_commit_marks(commit, all_flags);
@@ -433,7 +434,8 @@
 		return 0;
 
 	commit_list_insert(old_commit, &old_commit_list);
-	ret = is_descendant_of(new_commit, old_commit_list);
+	ret = repo_is_descendant_of(the_repository,
+				    new_commit, old_commit_list);
 	free_commit_list(old_commit_list);
 	return ret;
 }
@@ -485,7 +487,7 @@
 	/* Otherwise, we don't know; prepare to recurse */
 	parse_commit_or_die(candidate);
 
-	if (candidate->generation < cutoff)
+	if (commit_graph_generation(candidate) < cutoff)
 		return CONTAINS_NO;
 
 	return CONTAINS_UNKNOWN;
@@ -508,10 +510,12 @@
 	const struct commit_list *p;
 
 	for (p = want; p; p = p->next) {
+		uint32_t generation;
 		struct commit *c = p->item;
 		load_commit_graph_info(the_repository, c);
-		if (c->generation < cutoff)
-			cutoff = c->generation;
+		generation = commit_graph_generation(c);
+		if (generation < cutoff)
+			cutoff = generation;
 	}
 
 	result = contains_test(candidate, want, cache, cutoff);
@@ -554,7 +558,7 @@
 {
 	if (filter->with_commit_tag_algo)
 		return contains_tag_algo(commit, list, cache) == CONTAINS_YES;
-	return is_descendant_of(commit, list);
+	return repo_is_descendant_of(the_repository, commit, list);
 }
 
 static int compare_commits_by_gen(const void *_a, const void *_b)
@@ -562,9 +566,12 @@
 	const struct commit *a = *(const struct commit * const *)_a;
 	const struct commit *b = *(const struct commit * const *)_b;
 
-	if (a->generation < b->generation)
+	uint32_t generation_a = commit_graph_generation(a);
+	uint32_t generation_b = commit_graph_generation(b);
+
+	if (generation_a < generation_b)
 		return -1;
-	if (a->generation > b->generation)
+	if (generation_a > generation_b)
 		return 1;
 	return 0;
 }
@@ -603,7 +610,7 @@
 
 		list[nr_commits] = (struct commit *)from_one;
 		if (parse_commit(list[nr_commits]) ||
-		    list[nr_commits]->generation < min_generation) {
+		    commit_graph_generation(list[nr_commits]) < min_generation) {
 			result = 0;
 			goto cleanup;
 		}
@@ -639,7 +646,7 @@
 
 					if (parse_commit(parent->item) ||
 					    parent->item->date < min_commit_date ||
-					    parent->item->generation < min_generation)
+					    commit_graph_generation(parent->item) < min_generation)
 						continue;
 
 					commit_list_insert(parent->item, &stack);
@@ -680,11 +687,13 @@
 		add_object_array(&from_iter->item->object, NULL, &from_objs);
 
 		if (!parse_commit(from_iter->item)) {
+			uint32_t generation;
 			if (from_iter->item->date < min_commit_date)
 				min_commit_date = from_iter->item->date;
 
-			if (from_iter->item->generation < min_generation)
-				min_generation = from_iter->item->generation;
+			generation = commit_graph_generation(from_iter->item);
+			if (generation < min_generation)
+				min_generation = generation;
 		}
 
 		from_iter = from_iter->next;
@@ -692,11 +701,13 @@
 
 	while (to_iter) {
 		if (!parse_commit(to_iter->item)) {
+			uint32_t generation;
 			if (to_iter->item->date < min_commit_date)
 				min_commit_date = to_iter->item->date;
 
-			if (to_iter->item->generation < min_generation)
-				min_generation = to_iter->item->generation;
+			generation = commit_graph_generation(to_iter->item);
+			if (generation < min_generation)
+				min_generation = generation;
 		}
 
 		to_iter->item->object.flags |= PARENT2;
@@ -736,11 +747,13 @@
 	struct prio_queue queue = { compare_commits_by_gen_then_commit_date };
 
 	for (item = to; item < to_last; item++) {
+		uint32_t generation;
 		struct commit *c = *item;
 
 		parse_commit(c);
-		if (c->generation < min_generation)
-			min_generation = c->generation;
+		generation = commit_graph_generation(c);
+		if (generation < min_generation)
+			min_generation = generation;
 
 		if (!(c->object.flags & PARENT1)) {
 			c->object.flags |= PARENT1;
@@ -773,7 +786,7 @@
 
 			parse_commit(p);
 
-			if (p->generation < min_generation)
+			if (commit_graph_generation(p) < min_generation)
 				continue;
 
 			if (p->object.flags & PARENT2)
diff --git a/commit-reach.h b/commit-reach.h
index 99a43e8..b49ad71 100644
--- a/commit-reach.h
+++ b/commit-reach.h
@@ -27,7 +27,9 @@
 
 struct commit_list *get_octopus_merge_bases(struct commit_list *in);
 
-int is_descendant_of(struct commit *commit, struct commit_list *with_commit);
+int repo_is_descendant_of(struct repository *r,
+			  struct commit *commit,
+			  struct commit_list *with_commit);
 int repo_in_merge_bases(struct repository *r,
 			struct commit *commit,
 			struct commit *reference);
diff --git a/commit-slab-decl.h b/commit-slab-decl.h
index bfbed15..98de2c9 100644
--- a/commit-slab-decl.h
+++ b/commit-slab-decl.h
@@ -32,6 +32,7 @@
 void init_ ##slabname## _with_stride(struct slabname *s, unsigned stride); \
 void init_ ##slabname(struct slabname *s);				\
 void clear_ ##slabname(struct slabname *s);				\
+void deep_clear_ ##slabname(struct slabname *s, void (*free_fn)(elemtype *ptr)); \
 elemtype *slabname## _at_peek(struct slabname *s, const struct commit *c, int add_if_missing); \
 elemtype *slabname## _at(struct slabname *s, const struct commit *c);	\
 elemtype *slabname## _peek(struct slabname *s, const struct commit *c)
diff --git a/commit-slab-impl.h b/commit-slab-impl.h
index 5c0eb91..557738d 100644
--- a/commit-slab-impl.h
+++ b/commit-slab-impl.h
@@ -38,6 +38,19 @@
 	FREE_AND_NULL(s->slab);						\
 }									\
 									\
+scope void deep_clear_ ##slabname(struct slabname *s, void (*free_fn)(elemtype *)) \
+{									\
+	unsigned int i;							\
+	for (i = 0; i < s->slab_count; i++) {				\
+		unsigned int j;						\
+		if (!s->slab[i])					\
+			continue;					\
+		for (j = 0; j < s->slab_size; j++)			\
+			free_fn(&s->slab[i][j * s->stride]);		\
+	}								\
+	clear_ ##slabname(s);						\
+}									\
+									\
 scope elemtype *slabname## _at_peek(struct slabname *s,			\
 						  const struct commit *c, \
 						  int add_if_missing)   \
diff --git a/commit-slab.h b/commit-slab.h
index 05b3f28..8e72a30 100644
--- a/commit-slab.h
+++ b/commit-slab.h
@@ -47,6 +47,16 @@
  *
  *   Call this function before the slab falls out of scope to avoid
  *   leaking memory.
+ *
+ * - void deep_clear_indegree(struct indegree *, void (*free_fn)(int*))
+ *
+ *   Empties the slab, similar to clear_indegree(), but in addition it
+ *   calls the given 'free_fn' for each slab entry to release any
+ *   additional memory that might be owned by the entry (but not the
+ *   entry itself!).
+ *   Note that 'free_fn' might be called even for entries for which no
+ *   indegree_at() call has been made; in this case 'free_fn' is invoked
+ *   with a pointer to a zero-initialized location.
  */
 
 #define define_commit_slab(slabname, elemtype) \
diff --git a/commit.c b/commit.c
index 87686a7..7128895 100644
--- a/commit.c
+++ b/commit.c
@@ -37,7 +37,7 @@
 
 	if (!obj)
 		return NULL;
-	return object_as_type(r, obj, OBJ_COMMIT, quiet);
+	return object_as_type(obj, OBJ_COMMIT, quiet);
 }
 
 struct commit *lookup_commit_reference(struct repository *r, const struct object_id *oid)
@@ -62,7 +62,7 @@
 	struct object *obj = lookup_object(r, oid);
 	if (!obj)
 		return create_object(r, oid, alloc_commit_node(r));
-	return object_as_type(r, obj, OBJ_COMMIT, 0);
+	return object_as_type(obj, OBJ_COMMIT, 0);
 }
 
 struct commit *lookup_commit_reference_by_name(const char *name)
@@ -339,7 +339,7 @@
 	if (commit->maybe_tree || !commit->object.parsed)
 		return commit->maybe_tree;
 
-	if (commit->graph_pos != COMMIT_NOT_FROM_GRAPH)
+	if (commit_graph_position(commit) != COMMIT_NOT_FROM_GRAPH)
 		return get_commit_tree_in_graph(r, commit);
 
 	return NULL;
@@ -423,6 +423,8 @@
 	pptr = &item->parents;
 
 	graft = lookup_commit_graft(r, &item->object.oid);
+	if (graft)
+		r->parsed_objects->substituted_parent = 1;
 	while (bufptr + parent_entry_len < tail && !memcmp(bufptr, "parent ", 7)) {
 		struct commit *new_parent;
 
@@ -729,11 +731,13 @@
 int compare_commits_by_gen_then_commit_date(const void *a_, const void *b_, void *unused)
 {
 	const struct commit *a = a_, *b = b_;
+	const uint32_t generation_a = commit_graph_generation(a),
+		       generation_b = commit_graph_generation(b);
 
 	/* newer commits first */
-	if (a->generation < b->generation)
+	if (generation_a < generation_b)
 		return 1;
-	else if (a->generation > b->generation)
+	else if (generation_a > generation_b)
 		return -1;
 
 	/* use date as a heuristic when generations are equal */
diff --git a/commit.h b/commit.h
index 1b2dea5..e901538 100644
--- a/commit.h
+++ b/commit.h
@@ -36,8 +36,6 @@
 	 * or get_commit_tree_oid().
 	 */
 	struct tree *maybe_tree;
-	uint32_t graph_pos;
-	uint32_t generation;
 	unsigned int index;
 };
 
diff --git a/connect.c b/connect.c
index 0df45a1..e0d5b9f 100644
--- a/connect.c
+++ b/connect.c
@@ -18,7 +18,7 @@
 
 static char *server_capabilities_v1;
 static struct argv_array server_capabilities_v2 = ARGV_ARRAY_INIT;
-static const char *parse_feature_value(const char *, const char *, int *);
+static const char *next_server_feature_value(const char *feature, int *len, int *offset);
 
 static int check_ref(const char *name, unsigned int flags)
 {
@@ -83,6 +83,21 @@
 	return 0;
 }
 
+int server_feature_v2(const char *c, const char **v)
+{
+	int i;
+
+	for (i = 0; i < server_capabilities_v2.argc; i++) {
+		const char *out;
+		if (skip_prefix(server_capabilities_v2.argv[i], c, &out) &&
+		    (*out == '=')) {
+			*v = out + 1;
+			return 1;
+		}
+	}
+	return 0;
+}
+
 int server_supports_feature(const char *c, const char *feature,
 			    int die_on_error)
 {
@@ -181,17 +196,16 @@
 static void annotate_refs_with_symref_info(struct ref *ref)
 {
 	struct string_list symref = STRING_LIST_INIT_DUP;
-	const char *feature_list = server_capabilities_v1;
+	int offset = 0;
 
-	while (feature_list) {
+	while (1) {
 		int len;
 		const char *val;
 
-		val = parse_feature_value(feature_list, "symref", &len);
+		val = next_server_feature_value("symref", &len, &offset);
 		if (!val)
 			break;
 		parse_one_symref_info(&symref, val, len);
-		feature_list = val + 1;
 	}
 	string_list_sort(&symref);
 
@@ -205,21 +219,36 @@
 	string_list_clear(&symref, 0);
 }
 
-static void process_capabilities(const char *line, int *len)
+static void process_capabilities(struct packet_reader *reader, int *linelen)
 {
+	const char *feat_val;
+	int feat_len;
+	const char *line = reader->line;
 	int nul_location = strlen(line);
-	if (nul_location == *len)
+	if (nul_location == *linelen)
 		return;
 	server_capabilities_v1 = xstrdup(line + nul_location + 1);
-	*len = nul_location;
+	*linelen = nul_location;
+
+	feat_val = server_feature_value("object-format", &feat_len);
+	if (feat_val) {
+		char *hash_name = xstrndup(feat_val, feat_len);
+		int hash_algo = hash_algo_by_name(hash_name);
+		if (hash_algo != GIT_HASH_UNKNOWN)
+			reader->hash_algo = &hash_algos[hash_algo];
+		free(hash_name);
+	} else {
+		reader->hash_algo = &hash_algos[GIT_HASH_SHA1];
+	}
 }
 
-static int process_dummy_ref(const char *line)
+static int process_dummy_ref(const struct packet_reader *reader)
 {
+	const char *line = reader->line;
 	struct object_id oid;
 	const char *name;
 
-	if (parse_oid_hex(line, &oid, &name))
+	if (parse_oid_hex_algop(line, &oid, &name, reader->hash_algo))
 		return 0;
 	if (*name != ' ')
 		return 0;
@@ -235,13 +264,15 @@
 			line + strlen(line));
 }
 
-static int process_ref(const char *line, int len, struct ref ***list,
-		       unsigned int flags, struct oid_array *extra_have)
+static int process_ref(const struct packet_reader *reader, int len,
+		       struct ref ***list, unsigned int flags,
+		       struct oid_array *extra_have)
 {
+	const char *line = reader->line;
 	struct object_id old_oid;
 	const char *name;
 
-	if (parse_oid_hex(line, &old_oid, &name))
+	if (parse_oid_hex_algop(line, &old_oid, &name, reader->hash_algo))
 		return 0;
 	if (*name != ' ')
 		return 0;
@@ -261,16 +292,17 @@
 	return 1;
 }
 
-static int process_shallow(const char *line, int len,
+static int process_shallow(const struct packet_reader *reader, int len,
 			   struct oid_array *shallow_points)
 {
+	const char *line = reader->line;
 	const char *arg;
 	struct object_id old_oid;
 
 	if (!skip_prefix(line, "shallow ", &arg))
 		return 0;
 
-	if (get_oid_hex(arg, &old_oid))
+	if (get_oid_hex_algop(arg, &old_oid, reader->hash_algo))
 		die(_("protocol error: expected shallow sha-1, got '%s'"), arg);
 	if (!shallow_points)
 		die(_("repository on the other end cannot be shallow"));
@@ -317,20 +349,20 @@
 
 		switch (state) {
 		case EXPECTING_FIRST_REF:
-			process_capabilities(reader->line, &len);
-			if (process_dummy_ref(reader->line)) {
+			process_capabilities(reader, &len);
+			if (process_dummy_ref(reader)) {
 				state = EXPECTING_SHALLOW;
 				break;
 			}
 			state = EXPECTING_REF;
 			/* fallthrough */
 		case EXPECTING_REF:
-			if (process_ref(reader->line, len, &list, flags, extra_have))
+			if (process_ref(reader, len, &list, flags, extra_have))
 				break;
 			state = EXPECTING_SHALLOW;
 			/* fallthrough */
 		case EXPECTING_SHALLOW:
-			if (process_shallow(reader->line, len, shallow_points))
+			if (process_shallow(reader, len, shallow_points))
 				break;
 			die(_("protocol error: unexpected '%s'"), reader->line);
 		case EXPECTING_DONE:
@@ -344,7 +376,7 @@
 }
 
 /* Returns 1 when a valid ref has been added to `list`, 0 otherwise */
-static int process_ref_v2(const char *line, struct ref ***list)
+static int process_ref_v2(struct packet_reader *reader, struct ref ***list)
 {
 	int ret = 1;
 	int i = 0;
@@ -352,6 +384,7 @@
 	struct ref *ref;
 	struct string_list line_sections = STRING_LIST_INIT_DUP;
 	const char *end;
+	const char *line = reader->line;
 
 	/*
 	 * Ref lines have a number of fields which are space deliminated.  The
@@ -364,7 +397,7 @@
 		goto out;
 	}
 
-	if (parse_oid_hex(line_sections.items[i++].string, &old_oid, &end) ||
+	if (parse_oid_hex_algop(line_sections.items[i++].string, &old_oid, &end, reader->hash_algo) ||
 	    *end) {
 		ret = 0;
 		goto out;
@@ -372,7 +405,7 @@
 
 	ref = alloc_ref(line_sections.items[i++].string);
 
-	oidcpy(&ref->old_oid, &old_oid);
+	memcpy(ref->old_oid.hash, old_oid.hash, reader->hash_algo->rawsz);
 	**list = ref;
 	*list = &ref->next;
 
@@ -385,7 +418,8 @@
 			struct object_id peeled_oid;
 			char *peeled_name;
 			struct ref *peeled;
-			if (parse_oid_hex(arg, &peeled_oid, &end) || *end) {
+			if (parse_oid_hex_algop(arg, &peeled_oid, &end,
+						reader->hash_algo) || *end) {
 				ret = 0;
 				goto out;
 			}
@@ -393,7 +427,8 @@
 			peeled_name = xstrfmt("%s^{}", ref->name);
 			peeled = alloc_ref(peeled_name);
 
-			oidcpy(&peeled->old_oid, &peeled_oid);
+			memcpy(peeled->old_oid.hash, peeled_oid.hash,
+			       reader->hash_algo->rawsz);
 			**list = peeled;
 			*list = &peeled->next;
 
@@ -423,6 +458,7 @@
 			     int stateless_rpc)
 {
 	int i;
+	const char *hash_name;
 	*list = NULL;
 
 	if (server_supports_v2("ls-refs", 1))
@@ -431,6 +467,16 @@
 	if (server_supports_v2("agent", 0))
 		packet_write_fmt(fd_out, "agent=%s", git_user_agent_sanitized());
 
+	if (server_feature_v2("object-format", &hash_name)) {
+		int hash_algo = hash_algo_by_name(hash_name);
+		if (hash_algo == GIT_HASH_UNKNOWN)
+			die(_("unknown object format '%s' specified by server"), hash_name);
+		reader->hash_algo = &hash_algos[hash_algo];
+		packet_write_fmt(fd_out, "object-format=%s", reader->hash_algo->name);
+	} else {
+		reader->hash_algo = &hash_algos[GIT_HASH_SHA1];
+	}
+
 	if (server_options && server_options->nr &&
 	    server_supports_v2("server-option", 1))
 		for (i = 0; i < server_options->nr; i++)
@@ -450,7 +496,7 @@
 
 	/* Process response from server */
 	while (packet_reader_read(reader) == PACKET_READ_NORMAL) {
-		if (!process_ref_v2(reader->line, &list))
+		if (!process_ref_v2(reader, &list))
 			die(_("invalid ls-refs response: %s"), reader->line);
 	}
 
@@ -463,7 +509,7 @@
 	return list;
 }
 
-static const char *parse_feature_value(const char *feature_list, const char *feature, int *lenp)
+const char *parse_feature_value(const char *feature_list, const char *feature, int *lenp, int *offset)
 {
 	int len;
 
@@ -471,6 +517,8 @@
 		return NULL;
 
 	len = strlen(feature);
+	if (offset)
+		feature_list += *offset;
 	while (*feature_list) {
 		const char *found = strstr(feature_list, feature);
 		if (!found)
@@ -485,9 +533,14 @@
 			}
 			/* feature with a value (e.g., "agent=git/1.2.3") */
 			else if (*value == '=') {
+				int end;
+
 				value++;
+				end = strcspn(value, " \t\n");
 				if (lenp)
-					*lenp = strcspn(value, " \t\n");
+					*lenp = end;
+				if (offset)
+					*offset = value + end - feature_list;
 				return value;
 			}
 			/*
@@ -500,14 +553,41 @@
 	return NULL;
 }
 
+int server_supports_hash(const char *desired, int *feature_supported)
+{
+	int offset = 0;
+	int len;
+	const char *hash;
+
+	hash = next_server_feature_value("object-format", &len, &offset);
+	if (feature_supported)
+		*feature_supported = !!hash;
+	if (!hash) {
+		hash = hash_algos[GIT_HASH_SHA1].name;
+		len = strlen(hash);
+	}
+	while (hash) {
+		if (!xstrncmpz(desired, hash, len))
+			return 1;
+
+		hash = next_server_feature_value("object-format", &len, &offset);
+	}
+	return 0;
+}
+
 int parse_feature_request(const char *feature_list, const char *feature)
 {
-	return !!parse_feature_value(feature_list, feature, NULL);
+	return !!parse_feature_value(feature_list, feature, NULL, NULL);
+}
+
+static const char *next_server_feature_value(const char *feature, int *len, int *offset)
+{
+	return parse_feature_value(server_capabilities_v1, feature, len, offset);
 }
 
 const char *server_feature_value(const char *feature, int *len)
 {
-	return parse_feature_value(server_capabilities_v1, feature, len);
+	return parse_feature_value(server_capabilities_v1, feature, len, NULL);
 }
 
 int server_supports(const char *feature)
diff --git a/connect.h b/connect.h
index 235bc66..c53586e 100644
--- a/connect.h
+++ b/connect.h
@@ -18,7 +18,10 @@
 struct packet_reader;
 enum protocol_version discover_version(struct packet_reader *reader);
 
+int server_supports_hash(const char *desired, int *feature_supported);
+const char *parse_feature_value(const char *feature_list, const char *feature, int *lenp, int *offset);
 int server_supports_v2(const char *c, int die_on_error);
+int server_feature_v2(const char *c, const char **v);
 int server_supports_feature(const char *c, const char *feature,
 			    int die_on_error);
 
diff --git a/contrib/coccinelle/commit.cocci b/contrib/coccinelle/commit.cocci
index 778e470..af6dd4c 100644
--- a/contrib/coccinelle/commit.cocci
+++ b/contrib/coccinelle/commit.cocci
@@ -32,3 +32,21 @@
 - c->maybe_tree
 + repo_get_commit_tree(specify_the_right_repo_here, c)
   ...>}
+
+@@
+struct commit *c;
+expression E;
+@@
+(
+- c->generation = E;
++ commit_graph_data_at(c)->generation = E;
+|
+- c->graph_pos = E;
++ commit_graph_data_at(c)->graph_pos = E;
+|
+- c->generation
++ commit_graph_generation(c)
+|
+- c->graph_pos
++ commit_graph_position(c)
+)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index de5d0fb..ee468ea 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -50,7 +50,7 @@
 # variable.
 __git_find_repo_path ()
 {
-	if [ -n "$__git_repo_path" ]; then
+	if [ -n "${__git_repo_path-}" ]; then
 		# we already know where it is
 		return
 	fi
@@ -404,12 +404,12 @@
 	# spaces must be replaced with underscore for multi-word
 	# commands, e.g. "git remote add" becomes remote_add.
 	local cmd="$1"
-	local incl="$2"
-	local excl="$3"
+	local incl="${2-}"
+	local excl="${3-}"
 
 	local var=__gitcomp_builtin_"${cmd/-/_}"
 	local options
-	eval "options=\$$var"
+	eval "options=\${$var-}"
 
 	if [ -z "$options" ]; then
 		# leading and trailing spaces are significant to make
@@ -801,7 +801,7 @@
 #                --remote is only compatible with --mode=refs.
 __git_complete_refs ()
 {
-	local remote dwim pfx cur_="$cur" sfx=" " mode="refs"
+	local remote= dwim= pfx= cur_="$cur" sfx=" " mode="refs"
 
 	while test $# != 0; do
 		case "$1" in
@@ -1152,7 +1152,7 @@
 	while [ $c -lt $cword ]; do
 		for word in $wordlist; do
 			if [ "$word" = "${words[c]}" ]; then
-				if [ -n "$show_idx" ]; then
+				if [ -n "${show_idx-}" ]; then
 					echo "$c $word"
 				else
 					echo "$word"
@@ -1468,7 +1468,7 @@
 {
 	local last_option dwim_opt="--dwim"
 
-	if [ "$GIT_COMPLETION_CHECKOUT_NO_GUESS" = "1" ]; then
+	if [ "${GIT_COMPLETION_CHECKOUT_NO_GUESS-}" = "1" ]; then
 		dwim_opt=""
 	fi
 
@@ -3350,7 +3350,7 @@
 		((c++))
 	done
 
-	if [ -z "$command" ]; then
+	if [ -z "${command-}" ]; then
 		case "$prev" in
 		--git-dir|-C|--work-tree)
 			# these need a path argument, let's fall back to
@@ -3385,7 +3385,7 @@
 			"
 			;;
 		*)
-			if test -n "$GIT_TESTING_PORCELAIN_COMMAND_LIST"
+			if test -n "${GIT_TESTING_PORCELAIN_COMMAND_LIST-}"
 			then
 				__gitcomp "$GIT_TESTING_PORCELAIN_COMMAND_LIST"
 			else
diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
index 014cd7c..16260ba 100644
--- a/contrib/completion/git-prompt.sh
+++ b/contrib/completion/git-prompt.sh
@@ -70,6 +70,15 @@
 # state symbols by setting GIT_PS1_STATESEPARATOR. The default separator
 # is SP.
 #
+# When there is an in-progress operation such as a merge, rebase,
+# revert, cherry-pick, or bisect, the prompt will include information
+# related to the operation, often in the form "|<OPERATION-NAME>".
+#
+# When the repository has a sparse-checkout, a notification of the form
+# "|SPARSE" will be included in the prompt.  This can be shortened to a
+# single '?' character by setting GIT_PS1_COMPRESSSPARSESTATE, or omitted
+# by setting GIT_PS1_OMITSPARSESTATE.
+#
 # By default, __git_ps1 will compare HEAD to your SVN upstream if it can
 # find one, or @{upstream} otherwise.  Once you have set
 # GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
@@ -421,6 +430,13 @@
 		return $exit
 	fi
 
+	local sparse=""
+	if [ -z "${GIT_PS1_COMPRESSSPARSESTATE}" ] &&
+	   [ -z "${GIT_PS1_OMITSPARSESTATE}" ] &&
+	   [ "$(git config --bool core.sparseCheckout)" = "true" ]; then
+		sparse="|SPARSE"
+	fi
+
 	local r=""
 	local b=""
 	local step=""
@@ -492,6 +508,7 @@
 	local i=""
 	local s=""
 	local u=""
+	local h=""
 	local c=""
 	local p=""
 
@@ -524,6 +541,11 @@
 			u="%${ZSH_VERSION+%}"
 		fi
 
+		if [ -n "${GIT_PS1_COMPRESSSPARSESTATE}" ] &&
+		   [ "$(git config --bool core.sparseCheckout)" = "true" ]; then
+			h="?"
+		fi
+
 		if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
 			__git_ps1_show_upstream
 		fi
@@ -542,8 +564,8 @@
 		b="\${__git_ps1_branch_name}"
 	fi
 
-	local f="$w$i$s$u"
-	local gitstring="$c$b${f:+$z$f}$r$p"
+	local f="$h$w$i$s$u"
+	local gitstring="$c$b${f:+$z$f}${sparse}$r$p"
 
 	if [ $pcmode = yes ]; then
 		if [ "${__git_printf_supports_v-}" != yes ]; then
diff --git a/contrib/subtree/t/t7900-subtree.sh b/contrib/subtree/t/t7900-subtree.sh
index 57ff4b2..53d7acc 100755
--- a/contrib/subtree/t/t7900-subtree.sh
+++ b/contrib/subtree/t/t7900-subtree.sh
@@ -196,7 +196,8 @@
 		cd "$subtree_test_count" &&
 		git fetch ./"sub proj" master &&
 		git subtree merge --prefix="sub dir" FETCH_HEAD &&
-		check_equal "$(last_commit_message)" "Merge commit '\''$(git rev-parse FETCH_HEAD)'\''"
+		check_equal "$(last_commit_message)" \
+			"Merge commit '\''$(git rev-parse FETCH_HEAD)'\'' into master"
 	)
 '
 
@@ -273,7 +274,8 @@
 		cd "$test_count" &&
 		git fetch ./subproj master &&
 		git subtree merge --prefix=subdir/ FETCH_HEAD &&
-		check_equal "$(last_commit_message)" "Merge commit '\''$(git rev-parse FETCH_HEAD)'\''"
+		check_equal "$(last_commit_message)" \
+			"Merge commit '\''$(git rev-parse FETCH_HEAD)'\'' into master"
 	)
 '
 
diff --git a/diff-lib.c b/diff-lib.c
index 61812f4..25fd2de 100644
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -220,8 +220,7 @@
 			} else if (revs->diffopt.ita_invisible_in_index &&
 				   ce_intent_to_add(ce)) {
 				diff_addremove(&revs->diffopt, '+', ce->ce_mode,
-					       the_hash_algo->empty_tree, 0,
-					       ce->name, 0);
+					       &null_oid, 0, ce->name, 0);
 				continue;
 			}
 
diff --git a/diff.h b/diff.h
index 9443dc1..e0c0af6 100644
--- a/diff.h
+++ b/diff.h
@@ -431,11 +431,11 @@
 	struct combine_diff_path *p, const struct object_id *oid,
 	const struct object_id **parents_oid, int nparent,
 	struct strbuf *base, struct diff_options *opt);
-int diff_tree_oid(const struct object_id *old_oid,
-		  const struct object_id *new_oid,
-		  const char *base, struct diff_options *opt);
-int diff_root_tree_oid(const struct object_id *new_oid, const char *base,
-		       struct diff_options *opt);
+void diff_tree_oid(const struct object_id *old_oid,
+		   const struct object_id *new_oid,
+		   const char *base, struct diff_options *opt);
+void diff_root_tree_oid(const struct object_id *new_oid, const char *base,
+			struct diff_options *opt);
 
 struct combine_diff_path {
 	struct combine_diff_path *next;
diff --git a/dir.c b/dir.c
index 1045cc9..fe64be3 100644
--- a/dir.c
+++ b/dir.c
@@ -2209,13 +2209,13 @@
 				       baselen, excluded, pathspec);
 	case DT_REG:
 	case DT_LNK:
-		if (excluded)
-			return path_excluded;
 		if (pathspec &&
 		    !match_pathspec(istate, pathspec, path->buf, path->len,
 				    0 /* prefix */, NULL /* seen */,
 				    0 /* is_dir */))
 			return path_none;
+		if (excluded)
+			return path_excluded;
 		return path_untracked;
 	}
 }
diff --git a/entry.c b/entry.c
index 00b4903..449bd32 100644
--- a/entry.c
+++ b/entry.c
@@ -113,8 +113,7 @@
 	/* use fstat() only when path == ce->name */
 	if (fstat_is_reliable() &&
 	    state->refresh_cache && !state->base_dir_len) {
-		fstat(fd, st);
-		return 1;
+		return !fstat(fd, st);
 	}
 	return 0;
 }
diff --git a/fetch-pack.c b/fetch-pack.c
index acd55ba..80fb3bd 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -1050,6 +1050,8 @@
 		print_verbose(args, _("Server supports %s"), "deepen-relative");
 	else if (args->deepen_relative)
 		die(_("Server does not support --deepen"));
+	if (!server_supports_hash(the_hash_algo->name, NULL))
+		die(_("Server does not support this repository's object format"));
 
 	if (!args->no_dependents) {
 		mark_complete_and_common_ref(negotiator, args, &ref);
@@ -1188,6 +1190,7 @@
 			      int sideband_all, int seen_ack)
 {
 	int ret = 0;
+	const char *hash_name;
 	struct strbuf req_buf = STRBUF_INIT;
 
 	if (server_supports_v2("fetch", 1))
@@ -1202,6 +1205,17 @@
 					 args->server_options->items[i].string);
 	}
 
+	if (server_feature_v2("object-format", &hash_name)) {
+		int hash_algo = hash_algo_by_name(hash_name);
+		if (hash_algo_by_ptr(the_hash_algo) != hash_algo)
+			die(_("mismatched algorithms: client %s; server %s"),
+			    the_hash_algo->name, hash_name);
+		packet_write_fmt(fd_out, "object-format=%s", the_hash_algo->name);
+	} else if (hash_algo_by_ptr(the_hash_algo) != GIT_HASH_SHA1) {
+		die(_("the server does not support algorithm '%s'"),
+		    the_hash_algo->name);
+	}
+
 	packet_buf_delim(&req_buf);
 	if (args->use_thin_pack)
 		packet_buf_write(&req_buf, "thin-pack");
diff --git a/fmt-merge-msg.c b/fmt-merge-msg.c
index 72d32bd..bd22e1e 100644
--- a/fmt-merge-msg.c
+++ b/fmt-merge-msg.c
@@ -10,6 +10,8 @@
 #include "commit-reach.h"
 
 static int use_branch_desc;
+static int suppress_dest_pattern_seen;
+static struct string_list suppress_dest_patterns = STRING_LIST_INIT_DUP;
 
 int fmt_merge_msg_config(const char *key, const char *value, void *cb)
 {
@@ -22,6 +24,14 @@
 			merge_log_config = DEFAULT_MERGE_LOG_LEN;
 	} else if (!strcmp(key, "merge.branchdesc")) {
 		use_branch_desc = git_config_bool(key, value);
+	} else if (!strcmp(key, "merge.suppressdest")) {
+		if (!value)
+			return config_error_nonbool(key);
+		if (!*value)
+			string_list_clear(&suppress_dest_patterns, 0);
+		else
+			string_list_append(&suppress_dest_patterns, value);
+		suppress_dest_pattern_seen = 1;
 	} else {
 		return git_default_config(key, value, cb);
 	}
@@ -403,6 +413,24 @@
 	string_list_clear(&subjects, 0);
 }
 
+/*
+ * See if dest_branch matches with any glob pattern on the
+ * suppress_dest_patterns list.
+ *
+ * We may want to also allow negative matches e.g. ":!glob" like we do
+ * for pathspec, but for now, let's keep it simple and stupid.
+ */
+static int dest_suppressed(const char *dest_branch)
+{
+	struct string_list_item *item;
+
+	for_each_string_list_item(item, &suppress_dest_patterns) {
+		if (!wildmatch(item->string, dest_branch, WM_PATHNAME))
+			return 1;
+	}
+	return 0;
+}
+
 static void fmt_merge_msg_title(struct strbuf *out,
 				const char *current_branch)
 {
@@ -451,10 +479,9 @@
 			strbuf_addf(out, " of %s", srcs.items[i].string);
 	}
 
-	if (!strcmp("master", current_branch))
-		strbuf_addch(out, '\n');
-	else
-		strbuf_addf(out, " into %s\n", current_branch);
+	if (!dest_suppressed(current_branch))
+		strbuf_addf(out, " into %s", current_branch);
+	strbuf_addch(out, '\n');
 }
 
 static void fmt_tag_signature(struct strbuf *tagbuf,
@@ -599,6 +626,9 @@
 	void *current_branch_to_free;
 	struct merge_parents merge_parents;
 
+	if (!suppress_dest_pattern_seen)
+		string_list_append(&suppress_dest_patterns, "master");
+
 	memset(&merge_parents, 0, sizeof(merge_parents));
 
 	/* get current branch */
diff --git a/fsmonitor.c b/fsmonitor.c
index 932bd90..ed796e3 100644
--- a/fsmonitor.c
+++ b/fsmonitor.c
@@ -217,7 +217,7 @@
 				 * Need to use a char * variable because static
 				 * analysis was suggesting to use strbuf_addbuf
 				 * but we don't want to copy the entire strbuf
-				 * only the the chars up to the first NUL
+				 * only the chars up to the first NUL
 				 */
 				buf = query_result.buf;
 				strbuf_addstr(&last_update_token, buf);
diff --git a/git-compat-util.h b/git-compat-util.h
index a73632e..5637114 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -869,6 +869,12 @@
 FILE *fopen_or_warn(const char *path, const char *mode);
 
 /*
+ * Like strncmp, but only return zero if s is NUL-terminated and exactly len
+ * characters long.  If it is not, consider it greater than t.
+ */
+int xstrncmpz(const char *s, const char *t, size_t len);
+
+/*
  * FREE_AND_NULL(ptr) is like free(ptr) followed by ptr = NULL. Note
  * that ptr is used twice, so don't pass e.g. ptr++.
  */
diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl
index fc00d59..6483d79 100755
--- a/git-cvsexportcommit.perl
+++ b/git-cvsexportcommit.perl
@@ -22,6 +22,10 @@
 my $repo = Git->repository();
 $opt_w = $repo->config('cvsexportcommit.cvsdir') unless defined $opt_w;
 
+my $tmpdir = File::Temp->newdir;
+my $hash_algo = $repo->config('extensions.objectformat') || 'sha1';
+my $hexsz = $hash_algo eq 'sha256' ? 64 : 40;
+
 if ($opt_w || $opt_W) {
 	# Remember where GIT_DIR is before changing to CVS checkout
 	unless ($ENV{GIT_DIR}) {
@@ -96,7 +100,7 @@
     }
 
     if ($stage eq 'headers') {
-	if ($line =~ m/^parent (\w{40})$/) { # found a parent
+	if ($line =~ m/^parent ([0-9a-f]{$hexsz})$/) { # found a parent
 	    push @parents, $1;
 	} elsif ($line =~ m/^author (.+) \d+ [-+]\d+$/) {
 	    $author = $1;
@@ -111,7 +115,7 @@
     }
 }
 
-my $noparent = "0000000000000000000000000000000000000000";
+my $noparent = "0" x $hexsz;
 if ($parent) {
     my $found;
     # double check that it's a valid parent
@@ -174,7 +178,7 @@
 print "Checking if patch will apply\n";
 
 my @stat;
-open APPLY, "GIT_DIR= git-apply $context --summary --numstat<.cvsexportcommit.diff|" || die "cannot patch";
+open APPLY, "GIT_INDEX_FILE=$tmpdir/index git-apply $context --summary --numstat<.cvsexportcommit.diff|" || die "cannot patch";
 @stat=<APPLY>;
 close APPLY || die "Cannot patch";
 my (@bfiles,@files,@afiles,@dfiles);
@@ -329,7 +333,7 @@
 if ($opt_W) {
     system("git checkout -q $commit^0") && die "cannot patch";
 } else {
-    `GIT_DIR= git-apply $context --summary --numstat --apply <.cvsexportcommit.diff` || die "cannot patch";
+    `GIT_INDEX_FILE=$tmpdir/index git-apply $context --summary --numstat --apply <.cvsexportcommit.diff` || die "cannot patch";
 }
 
 print "Patch applied successfully. Adding new files and directories to CVS\n";
@@ -407,7 +411,7 @@
 
 if ($opt_W) {
     system("git checkout $go_back_to") && die "cannot move back to $go_back_to";
-    if (!($go_back_to =~ /^[0-9a-fA-F]{40}$/)) {
+    if (!($go_back_to =~ /^[0-9a-fA-F]{$hexsz}$/)) {
 	system("git symbolic-ref HEAD $go_back_to") &&
 	    die "cannot move back to $go_back_to";
     }
diff --git a/git-cvsimport.perl b/git-cvsimport.perl
index 1057f38..7bf3c12 100755
--- a/git-cvsimport.perl
+++ b/git-cvsimport.perl
@@ -637,9 +637,9 @@
 	return $pwd;
 }
 
-sub is_sha1 {
+sub is_oid {
 	my $s = shift;
-	return $s =~ /^[a-f0-9]{40}$/;
+	return $s =~ /^[a-f0-9]{40}(?:[a-f0-9]{24})?$/;
 }
 
 sub get_headref ($) {
@@ -810,7 +810,7 @@
 	open(my $fh, '-|', qw(git write-tree))
 		or die "unable to open git write-tree: $!";
 	chomp(my $tree = <$fh>);
-	is_sha1($tree)
+	is_oid($tree)
 		or die "Cannot get tree id ($tree): $!";
 	close($fh)
 		or die "Error running git write-tree: $?\n";
@@ -896,7 +896,7 @@
 
 	print "Committed patch $patchset ($branch $commit_date)\n" if $opt_v;
 	chomp(my $cid = <$commit_read>);
-	is_sha1($cid) or die "Cannot get commit id ($cid): $!\n";
+	is_oid($cid) or die "Cannot get commit id ($cid): $!\n";
 	print "Commit ID $cid\n" if $opt_v;
 	close($commit_read);
 
diff --git a/git-cvsserver.perl b/git-cvsserver.perl
index ae10442..f6f3fc1 100755
--- a/git-cvsserver.perl
+++ b/git-cvsserver.perl
@@ -365,7 +365,7 @@
     }
     foreach my $line ( @gitvars )
     {
-        next unless ( $line =~ /^(gitcvs)\.(?:(ext|pserver)\.)?([\w-]+)=(.*)$/ );
+        next unless ( $line =~ /^(gitcvs|extensions)\.(?:(ext|pserver)\.)?([\w-]+)=(.*)$/ );
         unless ($2) {
             $cfg->{$1}{$3} = $4;
         } else {
@@ -392,6 +392,9 @@
         $log->nofile();
     }
 
+    $state->{rawsz} = ($cfg->{'extensions'}{'objectformat'} || 'sha1') eq 'sha256' ? 32 : 20;
+    $state->{hexsz} = $state->{rawsz} * 2;
+
     return 1;
 }
 
@@ -1581,7 +1584,7 @@
 
             $parenthash = safe_pipe_capture('git', 'show-ref', '-s', $branchRef);
             chomp $parenthash;
-            if ($parenthash !~ /^[0-9a-f]{40}$/)
+            if ($parenthash !~ /^[0-9a-f]{$state->{hexsz}}$/)
             {
                 if ( defined($stickyInfo) && defined($stickyInfo->{tag}) )
                 {
@@ -1708,7 +1711,7 @@
     chomp($commithash);
     $log->info("Commit hash : $commithash");
 
-    unless ( $commithash =~ /[a-zA-Z0-9]{40}/ )
+    unless ( $commithash =~ /[a-zA-Z0-9]{$state->{hexsz}}/ )
     {
         $log->warn("Commit failed (Invalid commit hash)");
         print "error 1 Commit failed (unknown reason)\n";
@@ -2375,7 +2378,7 @@
         print "E ***************\n";
         while ( <ANNOTATE> )
         {
-            if (m/^([a-zA-Z0-9]{40})\t\([^\)]*\)(.*)$/i)
+            if (m/^([a-zA-Z0-9]{$state->{hexsz}})\t\([^\)]*\)(.*)$/i)
             {
                 my $commithash = $1;
                 my $data = $2;
@@ -2852,7 +2855,7 @@
         return;
     }
 
-    die "Need filehash" unless ( defined ( $filehash ) and $filehash =~ /^[a-zA-Z0-9]{40}$/ );
+    die "Need filehash" unless ( defined ( $filehash ) and $filehash =~ /^[a-zA-Z0-9]{$state->{hexsz}}$/ );
 
     my $type = safe_pipe_capture('git', 'cat-file', '-t', $filehash);
     chomp $type;
@@ -3042,7 +3045,7 @@
 
     my $ver = safe_pipe_capture('git', 'show-ref', '-s', "refs/heads/$state->{module}");
     chomp $ver;
-    if ($ver !~ /^[0-9a-f]{40}$/)
+    if ($ver !~ /^[0-9a-f]{$state->{hexsz}}$/)
     {
         $log->warn("Error from git show-ref -s refs/head$state->{module}");
         print "error 1 cannot find the current HEAD of module";
@@ -3281,7 +3284,7 @@
     }
     elsif( $srcType eq "sha1" )
     {
-        unless ( defined ( $name ) and $name =~ /^[a-zA-Z0-9]{40}$/ )
+        unless ( defined ( $name ) and $name =~ /^[a-zA-Z0-9]{$state->{hexsz}}$/ )
         {
             $log->warn("Need filehash");
             die "Need filehash\n";
@@ -3817,7 +3820,7 @@
     chomp $commitsha1;
 
     my $commitinfo = ::safe_pipe_capture('git', 'cat-file', 'commit', $self->{module});
-    unless ( $commitinfo =~ /tree\s+[a-zA-Z0-9]{40}/ )
+    unless ( $commitinfo =~ /tree\s+[a-zA-Z0-9]{$state->{hexsz}}/ )
     {
         die("Invalid module '$self->{module}'");
     }
@@ -3957,7 +3960,7 @@
             while ( <FILELIST> )
             {
 		chomp;
-                unless ( /^:\d{6}\s+([0-7]{6})\s+[a-f0-9]{40}\s+([a-f0-9]{40})\s+(\w)$/o )
+                unless ( /^:\d{6}\s+([0-7]{6})\s+[a-f0-9]{$state->{hexsz}}\s+([a-f0-9]{$state->{hexsz}})\s+(\w)$/o )
                 {
                     die("Couldn't process git-diff-tree line : $_");
                 }
@@ -4625,11 +4628,11 @@
             $db_query->execute($filename, $intRev);
             $meta = $db_query->fetchrow_hashref;
         }
-        elsif ( $revision =~ /^2\.1\.1\.2000(\.[1-3][0-9][0-9]){20}$/ )
+        elsif ( $revision =~ /^2\.1\.1\.2000(\.[1-3][0-9][0-9]){$state->{rawsz}}$/ )
         {
             my ($commitHash)=($revision=~/^2\.1\.1\.2000(.*)$/);
             $commitHash=~s/\.([0-9]+)/sprintf("%02x",$1-100)/eg;
-            if($commitHash=~/^[0-9a-f]{40}$/)
+            if($commitHash=~/^[0-9a-f]{$state->{hexsz}}$/)
             {
                 return $self->getMetaFromCommithash($filename,$commitHash);
             }
@@ -4639,7 +4642,7 @@
             $log->warning("failed get $revision with commithash=$commitHash");
             undef $revision;
         }
-        elsif ( $revision =~ /^[0-9a-f]{40}$/ )
+        elsif ( $revision =~ /^[0-9a-f]{$state->{hexsz}}$/ )
         {
             # Try DB first.  This is mostly only useful for req_annotate(),
             # which only calls this for stuff that should already be in
@@ -4658,7 +4661,7 @@
             if(! $meta)
             {
                 my($revCommit)=$self->lookupCommitRef($revision);
-                if($revCommit=~/^[0-9a-f]{40}$/)
+                if($revCommit=~/^[0-9a-f]{$state->{hexsz}}$/)
                 {
                     return $self->getMetaFromCommithash($filename,$revCommit);
                 }
@@ -4672,7 +4675,7 @@
         else
         {
             my($revCommit)=$self->lookupCommitRef($revision);
-            if($revCommit=~/^[0-9a-f]{40}$/)
+            if($revCommit=~/^[0-9a-f]{$state->{hexsz}}$/)
             {
                 return $self->getMetaFromCommithash($filename,$revCommit);
             }
@@ -4767,7 +4770,7 @@
 
     my($fileHash) = ::safe_pipe_capture("git","rev-parse","$revCommit:$filename");
     chomp $fileHash;
-    if(!($fileHash=~/^[0-9a-f]{40}$/))
+    if(!($fileHash=~/^[0-9a-f]{$state->{hexsz}}$/))
     {
         die "Invalid fileHash '$fileHash' looking up"
                     ." '$revCommit:$filename'\n";
@@ -4863,7 +4866,7 @@
     $commitHash = ::safe_pipe_capture("git","rev-parse","--verify","--quiet",
 				      $self->unescapeRefName($ref));
     $commitHash=~s/\s*$//;
-    if(!($commitHash=~/^[0-9a-f]{40}$/))
+    if(!($commitHash=~/^[0-9a-f]{$state->{hexsz}}$/))
     {
         $commitHash=undef;
     }
@@ -4909,7 +4912,7 @@
     my $commithash = shift;
     my $tablename = $self->tablename("commitmsgs");
 
-    die("Need commithash") unless ( defined($commithash) and $commithash =~ /^[a-zA-Z0-9]{40}$/ );
+    die("Need commithash") unless ( defined($commithash) and $commithash =~ /^[a-zA-Z0-9]{$state->{hexsz}}$/ );
 
     my $db_query;
     $db_query = $self->{dbh}->prepare_cached("SELECT value FROM $tablename WHERE key=?",{},1);
diff --git a/git-gui/lib/choose_repository.tcl b/git-gui/lib/choose_repository.tcl
index e54f3e6..af1fee7 100644
--- a/git-gui/lib/choose_repository.tcl
+++ b/git-gui/lib/choose_repository.tcl
@@ -357,31 +357,10 @@
 	if {$outdir_var ne ""} {
 		upvar 1 $outdir_var outdir
 	}
-	if {[file isfile $path]} {
-		set fp [open $path r]
-		gets $fp line
-		close $fp
-		if {[regexp "^gitdir: (.+)$" $line line link_target]} {
-			set path [file join [file dirname $path] $link_target]
-			set path [file normalize $path]
-		}
+	if {[catch {set outdir [git rev-parse --resolve-git-dir $path]}]} {
+		return 0
 	}
-
-	if {[file exists [file join $path HEAD]]
-	 && [file exists [file join $path objects]]
-	 && [file exists [file join $path config]]} {
-		set outdir $path
-		return 1
-	}
-	if {[is_Cygwin]} {
-		if {[file exists [file join $path HEAD]]
-		 && [file exists [file join $path objects.lnk]]
-		 && [file exists [file join $path config.lnk]]} {
-			set outdir $path
-			return 1
-		}
-	}
-	return 0
+	return 1
 }
 
 proc _objdir {path} {
diff --git a/git-send-email.perl b/git-send-email.perl
index dc95656..36c47ba 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -1699,10 +1699,14 @@
 				$xfer_encoding = $1 if not defined $xfer_encoding;
 			}
 			elsif (/^In-Reply-To: (.*)/i) {
-				$in_reply_to = $1;
+				if (!$initial_in_reply_to || $thread) {
+					$in_reply_to = $1;
+				}
 			}
 			elsif (/^References: (.*)/i) {
-				$references = $1;
+				if (!$initial_in_reply_to || $thread) {
+					$references = $1;
+				}
 			}
 			elsif (!/^Date:\s/i && /^[-A-Za-z]+:\s+\S/) {
 				push @xh, $_;
diff --git a/git-svn.perl b/git-svn.perl
index 4aa208f..58f5a7a 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -5,7 +5,8 @@
 use warnings;
 use strict;
 use vars qw/	$AUTHOR $VERSION
-		$sha1 $sha1_short $_revision $_repository
+		$oid $oid_short $oid_length
+		$_revision $_repository
 		$_q $_authors $_authors_prog %users/;
 $AUTHOR = 'Eric Wong <normalperson@yhbt.net>';
 $VERSION = '@@GIT_VERSION@@';
@@ -103,8 +104,9 @@
 	}
 }
 
-$sha1 = qr/[a-f\d]{40}/;
-$sha1_short = qr/[a-f\d]{4,40}/;
+$oid = qr/(?:[a-f\d]{40}(?:[a-f\d]{24})?)/;
+$oid_short = qr/[a-f\d]{4,64}/;
+$oid_length = 40;
 my ($_stdin, $_help, $_edit,
 	$_message, $_file, $_branch_dest,
 	$_template, $_shared,
@@ -498,6 +500,7 @@
 		command_noisy('config', "$pfx.preserve-empty-dirs", 'true');
 		command_noisy('config', "$pfx.placeholder-filename", $$fname);
 	}
+	load_object_format();
 }
 
 sub init_subdir {
@@ -582,7 +585,7 @@
 		print "Reading from stdin...\n";
 		@commits = ();
 		while (<STDIN>) {
-			if (/\b($sha1_short)\b/o) {
+			if (/\b($oid_short)\b/o) {
 				unshift @commits, $1;
 			}
 		}
@@ -1831,7 +1834,7 @@
 	if ($type eq 'commit') {
 		$expected = (grep /^tree /, command(qw/cat-file commit/,
 		                                    $treeish))[0];
-		($expected) = ($expected =~ /^tree ($sha1)$/o);
+		($expected) = ($expected =~ /^tree ($oid)$/o);
 		die "Unable to get tree from $treeish\n" unless $expected;
 	} elsif ($type eq 'tree') {
 		$expected = $treeish;
@@ -1975,9 +1978,15 @@
 			}
 		}
 	}
+	load_object_format();
 	delete @$opts{@config_only} if @config_only;
 }
 
+sub load_object_format {
+	chomp(my $hash = `git config --get extensions.objectformat`);
+	$::oid_length = 64 if $hash eq 'sha256';
+}
+
 sub extract_metadata {
 	my $id = shift or return (undef, undef, undef);
 	my ($url, $rev, $uuid) = ($id =~ /^\s*git-svn-id:\s+(.*)\@(\d+)
@@ -2006,10 +2015,10 @@
 		print $out $sha, "\n";
 
 		while (my $line = <$in>) {
-			if ($first && $line =~ /^[[:xdigit:]]{40}\smissing$/) {
+			if ($first && $line =~ /^$::oid\smissing$/) {
 				last;
 			} elsif ($first &&
-			       $line =~ /^[[:xdigit:]]{40}\scommit\s(\d+)$/) {
+			       $line =~ /^$::oid\scommit\s(\d+)$/) {
 				$first = 0;
 				$size = $1;
 				next;
@@ -2036,7 +2045,7 @@
 	my $hash;
 	my %max;
 	while (<$fh>) {
-		if ( m{^commit ($::sha1)$} ) {
+		if ( m{^commit ($::oid)$} ) {
 			unshift @$refs, $hash if $hash and $refs;
 			$hash = $1;
 			next;
diff --git a/git.c b/git.c
index a2d337e..6cd887b 100644
--- a/git.c
+++ b/git.c
@@ -346,6 +346,8 @@
 			commit_pager_choice();
 
 			child.use_shell = 1;
+			child.clean_on_exit = 1;
+			child.wait_after_clean = 1;
 			child.trace2_child_class = "shell_alias";
 			argv_array_push(&child.args, alias_string + 1);
 			argv_array_pushv(&child.args, (*argv) + 1);
@@ -574,7 +576,7 @@
 	{ "shortlog", cmd_shortlog, RUN_SETUP_GENTLY | USE_PAGER },
 	{ "show", cmd_show, RUN_SETUP },
 	{ "show-branch", cmd_show_branch, RUN_SETUP },
-	{ "show-index", cmd_show_index },
+	{ "show-index", cmd_show_index, RUN_SETUP_GENTLY },
 	{ "show-ref", cmd_show_ref, RUN_SETUP },
 	{ "sparse-checkout", cmd_sparse_checkout, RUN_SETUP | NEED_WORK_TREE },
 	{ "stage", cmd_add, RUN_SETUP | NEED_WORK_TREE },
@@ -767,7 +769,7 @@
 			 * OK to return. Otherwise, we just pass along the status code.
 			 */
 			i = run_command_v_opt_tr2(args.argv, RUN_SILENT_EXEC_FAILURE |
-						  RUN_CLEAN_ON_EXIT, "git_alias");
+						  RUN_CLEAN_ON_EXIT | RUN_WAIT_AFTER_CLEAN, "git_alias");
 			if (i >= 0 || errno != ENOENT)
 				exit(i);
 			die("could not execute builtin %s", **argv);
diff --git a/grep.c b/grep.c
index 13232a9..54af9f8 100644
--- a/grep.c
+++ b/grep.c
@@ -1817,7 +1817,7 @@
 		 * We might set up the shared textconv cache data here, which
 		 * is not thread-safe. Also, get_oid_with_context() and
 		 * parse_object() might be internally called. As they are not
-		 * currenty thread-safe and might be racy with object reading,
+		 * currently thread-safe and might be racy with object reading,
 		 * obj_read_lock() must be called.
 		 */
 		grep_attr_lock();
diff --git a/hashmap.h b/hashmap.h
index 79ae9f8..ef220de 100644
--- a/hashmap.h
+++ b/hashmap.h
@@ -168,7 +168,7 @@
  * argument `keydata`, respectively. Otherwise, `keydata` is NULL.
  *
  * When it is too expensive to allocate a user entry (either because it is
- * large or varialbe sized, such that it is not on the stack), then the
+ * large or variable sized, such that it is not on the stack), then the
  * relevant data to check for equality should be passed via `keydata`.
  * In this case `key` can be a stripped down version of the user key data
  * or even just a hashmap_entry having the correct hash.
diff --git a/http-push.c b/http-push.c
index ac7868f..1ff1883 100644
--- a/http-push.c
+++ b/http-push.c
@@ -70,10 +70,10 @@
 #define LOCK_REFRESH 30
 
 /* Remember to update object flag allocation in object.h */
-#define LOCAL    (1u<<16)
-#define REMOTE   (1u<<17)
-#define FETCHING (1u<<18)
-#define PUSHING  (1u<<19)
+#define LOCAL    (1u<<11)
+#define REMOTE   (1u<<12)
+#define FETCHING (1u<<13)
+#define PUSHING  (1u<<14)
 
 /* We allow "recursive" symbolic refs. Only within reason, though */
 #define MAXDEPTH 5
diff --git a/object-store.h b/object-store.h
index d1e490f..f439d47 100644
--- a/object-store.h
+++ b/object-store.h
@@ -70,6 +70,7 @@
 	size_t index_size;
 	uint32_t num_objects;
 	uint32_t num_bad_objects;
+	uint32_t crc_offset;
 	unsigned char *bad_object_sha1;
 	int index_version;
 	time_t mtime;
diff --git a/object.c b/object.c
index 794c866..3257518 100644
--- a/object.c
+++ b/object.c
@@ -157,13 +157,13 @@
 	return obj;
 }
 
-void *object_as_type(struct repository *r, struct object *obj, enum object_type type, int quiet)
+void *object_as_type(struct object *obj, enum object_type type, int quiet)
 {
 	if (obj->type == type)
 		return obj;
 	else if (obj->type == OBJ_NONE) {
 		if (type == OBJ_COMMIT)
-			init_commit_node(r, (struct commit *) obj);
+			init_commit_node((struct commit *) obj);
 		else
 			obj->type = type;
 		return obj;
diff --git a/object.h b/object.h
index b22328b..96a2105 100644
--- a/object.h
+++ b/object.h
@@ -15,7 +15,6 @@
 	struct alloc_state *commit_state;
 	struct alloc_state *tag_state;
 	struct alloc_state *object_state;
-	unsigned commit_count;
 
 	/* parent substitutions from .git/info/grafts and .git/shallow */
 	struct commit_graft **grafts;
@@ -26,6 +25,7 @@
 	char *alternate_shallow_file;
 
 	int commit_graft_prepared;
+	int substituted_parent;
 
 	struct buffer_slab *buffer_slab;
 };
@@ -59,7 +59,7 @@
 
 /*
  * object flag allocation:
- * revision.h:               0---------10         15                   25----28
+ * revision.h:               0---------10         15             23------26
  * fetch-pack.c:             01
  * negotiator/default.c:       2--5
  * walker.c:                 0-2
@@ -67,7 +67,7 @@
  * builtin/blame.c:                        12-13
  * bisect.c:                                        16
  * bundle.c:                                        16
- * http-push.c:                                     16-----19
+ * http-push.c:                          11-----14
  * commit-graph.c:                                15
  * commit-reach.c:                                  16-----19
  * sha1-name.c:                                              20
@@ -79,7 +79,7 @@
  * builtin/show-branch.c:    0-------------------------------------------26
  * builtin/unpack-objects.c:                                 2021
  */
-#define FLAG_BITS  29
+#define FLAG_BITS  28
 
 /*
  * The object type is stored in 3 bits.
@@ -121,7 +121,7 @@
 
 void *create_object(struct repository *r, const struct object_id *oid, void *obj);
 
-void *object_as_type(struct repository *r, struct object *obj, enum object_type type, int quiet);
+void *object_as_type(struct object *obj, enum object_type type, int quiet);
 
 /*
  * Returns the object, having parsed it to find out what it is.
diff --git a/pack-write.c b/pack-write.c
index f0017be..685d327 100644
--- a/pack-write.c
+++ b/pack-write.c
@@ -38,9 +38,8 @@
 }
 
 /*
- * On entry *sha1 contains the pack content SHA1 hash, on exit it is
- * the SHA1 hash of sorted object names. The objects array passed in
- * will be sorted by SHA1 on exit.
+ * The *sha1 contains the pack content SHA1 hash.
+ * The objects array passed in will be sorted by SHA1 on exit.
  */
 const char *write_idx_file(const char *index_name, struct pack_idx_entry **objects,
 			   int nr_objects, const struct pack_idx_option *opts,
diff --git a/packfile.c b/packfile.c
index f4e7529..6ab5233 100644
--- a/packfile.c
+++ b/packfile.c
@@ -178,6 +178,7 @@
 		     */
 		    (sizeof(off_t) <= 4))
 			return error("pack too large for current definition of off_t in %s", path);
+		p->crc_offset = 8 + 4 * 256 + nr * hashsz;
 	}
 
 	p->index_version = version;
diff --git a/perl/Git/IndexInfo.pm b/perl/Git/IndexInfo.pm
index a43108c..2a7b490 100644
--- a/perl/Git/IndexInfo.pm
+++ b/perl/Git/IndexInfo.pm
@@ -5,13 +5,15 @@
 
 sub new {
 	my ($class) = @_;
+	my $hash_algo = Git::config('extensions.objectformat') || 'sha1';
 	my ($gui, $ctx) = command_input_pipe(qw/update-index -z --index-info/);
-	bless { gui => $gui, ctx => $ctx, nr => 0}, $class;
+	bless { gui => $gui, ctx => $ctx, nr => 0, hash_algo => $hash_algo}, $class;
 }
 
 sub remove {
 	my ($self, $path) = @_;
-	if (print { $self->{gui} } '0 ', 0 x 40, "\t", $path, "\0") {
+	my $length = $self->{hash_algo} eq 'sha256' ? 64 : 40;
+	if (print { $self->{gui} } '0 ', 0 x $length, "\t", $path, "\0") {
 		return ++$self->{nr};
 	}
 	undef;
diff --git a/perl/Git/SVN.pm b/perl/Git/SVN.pm
index 4b28b87..d1c352f 100644
--- a/perl/Git/SVN.pm
+++ b/perl/Git/SVN.pm
@@ -2,7 +2,7 @@
 use strict;
 use warnings;
 use Fcntl qw/:DEFAULT :seek/;
-use constant rev_map_fmt => 'NH40';
+use constant rev_map_fmt => 'NH*';
 use vars qw/$_no_metadata
             $_repack $_repack_flags $_use_svm_props $_head
             $_use_svnsync_props $no_reuse_existing
@@ -874,7 +874,7 @@
 		command_noisy('read-tree', $treeish) unless -e $self->{index};
 		my $x = command_oneline('write-tree');
 		my ($y) = (command(qw/cat-file commit/, $treeish) =~
-		           /^tree ($::sha1)/mo);
+		           /^tree ($::oid)/mo);
 		return if $y eq $x;
 
 		warn "Index mismatch: $y != $x\nrereading $treeish\n";
@@ -1020,7 +1020,7 @@
 		$tree = $self->tmp_index_do(sub {
 		                            command_oneline('write-tree') });
 	}
-	die "Tree is not a valid sha1: $tree\n" if $tree !~ /^$::sha1$/o;
+	die "Tree is not a valid oid $tree\n" if $tree !~ /^$::oid$/o;
 
 	my @exec = ('git', 'commit-tree', $tree);
 	foreach ($self->get_commit_parents($log_entry)) {
@@ -1048,8 +1048,8 @@
 	close $out_fh or croak $!;
 	waitpid $pid, 0;
 	croak $? if $?;
-	if ($commit !~ /^$::sha1$/o) {
-		die "Failed to commit, invalid sha1: $commit\n";
+	if ($commit !~ /^$::oid$/o) {
+		die "Failed to commit, invalid oid: $commit\n";
 	}
 
 	$self->rev_map_set($log_entry->{revision}, $commit, 1);
@@ -2087,10 +2087,10 @@
 	open my $fh, '<', $path or croak "open: $!";
 	binmode $fh or croak "binmode: $!";
 	while (<$fh>) {
-		length($_) == 41 or croak "inconsistent size in ($_) != 41";
+		length($_) == $::oid_length + 1 or croak "inconsistent size in ($_)";
 		chomp($_);
 		++$r;
-		next if $_ eq ('0' x 40);
+		next if $_ eq ('0' x $::oid_length);
 		$self->rev_map_set($r, $_);
 		print "r$r = $_\n";
 	}
@@ -2150,7 +2150,7 @@
 	my $svn_uuid = $self->rewrite_uuid || $self->ra_uuid;
 	my $c;
 	while (<$log>) {
-		if ( m{^commit ($::sha1)$} ) {
+		if ( m{^commit ($::oid)$} ) {
 			$c = $1;
 			next;
 		}
@@ -2196,9 +2196,9 @@
 # (mainly tags)
 #
 # The format is this:
-#   - 24 bytes for every record,
+#   - 24 or 36 bytes for every record,
 #     * 4 bytes for the integer representing an SVN revision number
-#     * 20 bytes representing the sha1 of a git commit
+#     * 20 or 32 bytes representing the oid of a git commit
 #   - No empty padding records like the old format
 #     (except the last record, which can be overwritten)
 #   - new records are written append-only since SVN revision numbers
@@ -2207,7 +2207,7 @@
 #   - Piping the file to xxd -c24 is a good way of dumping it for
 #     viewing or editing (piped back through xxd -r), should the need
 #     ever arise.
-#   - The last record can be padding revision with an all-zero sha1
+#   - The last record can be padding revision with an all-zero oid
 #     This is used to optimize fetch performance when using multiple
 #     "fetch" directives in .git/config
 #
@@ -2215,38 +2215,39 @@
 
 sub _rev_map_set {
 	my ($fh, $rev, $commit) = @_;
+	my $record_size = ($::oid_length / 2) + 4;
 
 	binmode $fh or croak "binmode: $!";
 	my $size = (stat($fh))[7];
-	($size % 24) == 0 or croak "inconsistent size: $size";
+	($size % $record_size) == 0 or croak "inconsistent size: $size";
 
 	my $wr_offset = 0;
 	if ($size > 0) {
-		sysseek($fh, -24, SEEK_END) or croak "seek: $!";
-		my $read = sysread($fh, my $buf, 24) or croak "read: $!";
-		$read == 24 or croak "read only $read bytes (!= 24)";
+		sysseek($fh, -$record_size, SEEK_END) or croak "seek: $!";
+		my $read = sysread($fh, my $buf, $record_size) or croak "read: $!";
+		$read == $record_size or croak "read only $read bytes (!= $record_size)";
 		my ($last_rev, $last_commit) = unpack(rev_map_fmt, $buf);
-		if ($last_commit eq ('0' x40)) {
-			if ($size >= 48) {
-				sysseek($fh, -48, SEEK_END) or croak "seek: $!";
-				$read = sysread($fh, $buf, 24) or
+		if ($last_commit eq ('0' x $::oid_length)) {
+			if ($size >= ($record_size * 2)) {
+				sysseek($fh, -($record_size * 2), SEEK_END) or croak "seek: $!";
+				$read = sysread($fh, $buf, $record_size) or
 				    croak "read: $!";
-				$read == 24 or
-				    croak "read only $read bytes (!= 24)";
+				$read == $record_size or
+				    croak "read only $read bytes (!= $record_size)";
 				($last_rev, $last_commit) =
 				    unpack(rev_map_fmt, $buf);
-				if ($last_commit eq ('0' x40)) {
+				if ($last_commit eq ('0' x $::oid_length)) {
 					croak "inconsistent .rev_map\n";
 				}
 			}
 			if ($last_rev >= $rev) {
 				croak "last_rev is higher!: $last_rev >= $rev";
 			}
-			$wr_offset = -24;
+			$wr_offset = -$record_size;
 		}
 	}
 	sysseek($fh, $wr_offset, SEEK_END) or croak "seek: $!";
-	syswrite($fh, pack(rev_map_fmt, $rev, $commit), 24) == 24 or
+	syswrite($fh, pack(rev_map_fmt, $rev, $commit), $record_size) == $record_size or
 	  croak "write: $!";
 }
 
@@ -2271,7 +2272,7 @@
 sub rev_map_set {
 	my ($self, $rev, $commit, $update_ref, $uuid) = @_;
 	defined $commit or die "missing arg3\n";
-	length $commit == 40 or die "arg3 must be a full SHA1 hexsum\n";
+	$commit =~ /^$::oid$/ or die "arg3 must be a full hex object ID\n";
 	my $db = $self->map_path($uuid);
 	my $db_lock = "$db.lock";
 	my $sigmask;
@@ -2344,29 +2345,30 @@
 
 sub rev_map_max_norebuild {
 	my ($self, $want_commit) = @_;
+	my $record_size = ($::oid_length / 2) + 4;
 	my $map_path = $self->map_path;
 	stat $map_path or return $want_commit ? (0, undef) : 0;
 	sysopen(my $fh, $map_path, O_RDONLY) or croak "open: $!";
 	binmode $fh or croak "binmode: $!";
 	my $size = (stat($fh))[7];
-	($size % 24) == 0 or croak "inconsistent size: $size";
+	($size % $record_size) == 0 or croak "inconsistent size: $size";
 
 	if ($size == 0) {
 		close $fh or croak "close: $!";
 		return $want_commit ? (0, undef) : 0;
 	}
 
-	sysseek($fh, -24, SEEK_END) or croak "seek: $!";
-	sysread($fh, my $buf, 24) == 24 or croak "read: $!";
+	sysseek($fh, -$record_size, SEEK_END) or croak "seek: $!";
+	sysread($fh, my $buf, $record_size) == $record_size or croak "read: $!";
 	my ($r, $c) = unpack(rev_map_fmt, $buf);
-	if ($want_commit && $c eq ('0' x40)) {
-		if ($size < 48) {
+	if ($want_commit && $c eq ('0' x $::oid_length)) {
+		if ($size < $record_size * 2) {
 			return $want_commit ? (0, undef) : 0;
 		}
-		sysseek($fh, -48, SEEK_END) or croak "seek: $!";
-		sysread($fh, $buf, 24) == 24 or croak "read: $!";
+		sysseek($fh, -($record_size * 2), SEEK_END) or croak "seek: $!";
+		sysread($fh, $buf, $record_size) == $record_size or croak "read: $!";
 		($r, $c) = unpack(rev_map_fmt, $buf);
-		if ($c eq ('0'x40)) {
+		if ($c eq ('0' x $::oid_length)) {
 			croak "Penultimate record is all-zeroes in $map_path";
 		}
 	}
@@ -2387,30 +2389,31 @@
 
 sub _rev_map_get {
 	my ($fh, $rev) = @_;
+	my $record_size = ($::oid_length / 2) + 4;
 
 	binmode $fh or croak "binmode: $!";
 	my $size = (stat($fh))[7];
-	($size % 24) == 0 or croak "inconsistent size: $size";
+	($size % $record_size) == 0 or croak "inconsistent size: $size";
 
 	if ($size == 0) {
 		return undef;
 	}
 
-	my ($l, $u) = (0, $size - 24);
+	my ($l, $u) = (0, $size - $record_size);
 	my ($r, $c, $buf);
 
 	while ($l <= $u) {
-		my $i = int(($l/24 + $u/24) / 2) * 24;
+		my $i = int(($l/$record_size + $u/$record_size) / 2) * $record_size;
 		sysseek($fh, $i, SEEK_SET) or croak "seek: $!";
-		sysread($fh, my $buf, 24) == 24 or croak "read: $!";
+		sysread($fh, my $buf, $record_size) == $record_size or croak "read: $!";
 		my ($r, $c) = unpack(rev_map_fmt, $buf);
 
 		if ($r < $rev) {
-			$l = $i + 24;
+			$l = $i + $record_size;
 		} elsif ($r > $rev) {
-			$u = $i - 24;
+			$u = $i - $record_size;
 		} else { # $r == $rev
-			return $c eq ('0' x 40) ? undef : $c;
+			return $c eq ('0' x $::oid_length) ? undef : $c;
 		}
 	}
 	undef;
diff --git a/perl/Git/SVN/Editor.pm b/perl/Git/SVN/Editor.pm
index 0df16ed..c961444 100644
--- a/perl/Git/SVN/Editor.pm
+++ b/perl/Git/SVN/Editor.pm
@@ -63,7 +63,7 @@
 	my @mods;
 	while (defined($_ = get_record($diff_fh, "\0"))) {
 		if ($state eq 'meta' && /^:(\d{6})\s(\d{6})\s
-					($::sha1)\s($::sha1)\s
+					($::oid)\s($::oid)\s
 					([MTCRAD])\d*$/xo) {
 			push @mods, {	mode_a => $1, mode_b => $2,
 					sha1_a => $3, sha1_b => $4,
@@ -400,12 +400,12 @@
 	    ($m->{mode_b} !~ /^120/ && $m->{mode_a} =~ /^120/)) {
 		$self->D({
 			mode_a => $m->{mode_a}, mode_b => '000000',
-			sha1_a => $m->{sha1_a}, sha1_b => '0' x 40,
+			sha1_a => $m->{sha1_a}, sha1_b => '0' x $::oid_length,
 			chg => 'D', file_b => $m->{file_b}
 		}, $deletions);
 		$self->A({
 			mode_a => '000000', mode_b => $m->{mode_b},
-			sha1_a => '0' x 40, sha1_b => $m->{sha1_b},
+			sha1_a => '0' x $::oid_length, sha1_b => $m->{sha1_b},
 			chg => 'A', file_b => $m->{file_b}
 		}, $deletions);
 		return;
@@ -434,7 +434,7 @@
 		$self->change_file_prop($fbat,'svn:special',undef);
 	}
 	my $blob = $m->{"sha1_$which"};
-	return ($fh,) if ($blob =~ /^0{40}$/);
+	return ($fh,) if ($blob =~ /^0+$/);
 	my $size = $::_repository->cat_blob($blob, $fh);
 	croak "Failed to read object $blob" if ($size < 0);
 	$fh->flush == 0 or croak $!;
diff --git a/perl/Git/SVN/Fetcher.pm b/perl/Git/SVN/Fetcher.pm
index 64e900a..729e533 100644
--- a/perl/Git/SVN/Fetcher.pm
+++ b/perl/Git/SVN/Fetcher.pm
@@ -173,7 +173,7 @@
 
 	# remove entire directories.
 	my ($tree) = (command('ls-tree', '-z', $self->{c}, "./$gpath")
-	                 =~ /\A040000 tree ([a-f\d]{40})\t\Q$gpath\E\0/);
+	                 =~ /\A040000 tree ($::oid)\t\Q$gpath\E\0/);
 	if ($tree) {
 		my ($ls, $ctx) = command_output_pipe(qw/ls-tree
 		                                     -r --name-only -z/,
@@ -203,7 +203,7 @@
 
 	my $gpath = $self->git_path($path);
 	($mode, $blob) = (command('ls-tree', '-z', $self->{c}, "./$gpath")
-	                     =~ /\A(\d{6}) blob ([a-f\d]{40})\t\Q$gpath\E\0/);
+	                     =~ /\A(\d{6}) blob ($::oid)\t\Q$gpath\E\0/);
 	unless (defined $mode && defined $blob) {
 		die "$path was not found in commit $self->{c} (r$rev)\n";
 	}
@@ -413,7 +413,7 @@
 
 		$hash = $::_repository->hash_and_insert_object(
 				Git::temp_path($fh));
-		$hash =~ /^[a-f\d]{40}$/ or die "not a sha1: $hash\n";
+		$hash =~ /^$::oid$/ or die "not an object ID: $hash\n";
 
 		Git::temp_release($fb->{base}, 1);
 		Git::temp_release($fh, 1);
diff --git a/perl/Git/SVN/Log.pm b/perl/Git/SVN/Log.pm
index 6641053..3858fcf 100644
--- a/perl/Git/SVN/Log.pm
+++ b/perl/Git/SVN/Log.pm
@@ -285,7 +285,7 @@
 	my (@k, $c, $d, $stat);
 	my $esc_color = qr/(?:\033\[(?:(?:\d+;)*\d*)?m)*/;
 	while (<$log>) {
-		if (/^${esc_color}commit (?:- )?($::sha1_short)/o) {
+		if (/^${esc_color}commit (?:- )?($::oid_short)/o) {
 			my $cmt = $1;
 			if ($c && cmt_showable($c) && $c->{r} != $r_last) {
 				$r_last = $c->{r};
diff --git a/perl/Git/SVN/Ra.pm b/perl/Git/SVN/Ra.pm
index 56ad987..2cfe055 100644
--- a/perl/Git/SVN/Ra.pm
+++ b/perl/Git/SVN/Ra.pm
@@ -486,11 +486,11 @@
 			$reload_ra->() if $ra_invalid;
 		}
 		# pre-fill the .rev_db since it'll eventually get filled in
-		# with '0' x40 if something new gets committed
+		# with '0' x $oid_length if something new gets committed
 		foreach my $gs (@$gsv) {
 			next if $gs->rev_map_max >= $max;
 			next if defined $gs->rev_map_get($max);
-			$gs->rev_map_set($max, 0 x40);
+			$gs->rev_map_set($max, 0 x $::oid_length);
 		}
 		foreach my $g (@$globs) {
 			my $k = "svn-remote.$g->{remote}.$g->{t}-maxRev";
diff --git a/pkt-line.c b/pkt-line.c
index 8f9bc68..844c253 100644
--- a/pkt-line.c
+++ b/pkt-line.c
@@ -490,6 +490,7 @@
 	reader->buffer_size = sizeof(packet_buffer);
 	reader->options = options;
 	reader->me = "git";
+	reader->hash_algo = &hash_algos[GIT_HASH_SHA1];
 }
 
 enum packet_read_status packet_reader_read(struct packet_reader *reader)
diff --git a/pkt-line.h b/pkt-line.h
index 5b373fe..8c90daa 100644
--- a/pkt-line.h
+++ b/pkt-line.h
@@ -177,6 +177,9 @@
 
 	unsigned use_sideband : 1;
 	const char *me;
+
+	/* hash algorithm in use */
+	const struct git_hash_algo *hash_algo;
 };
 
 /*
diff --git a/po/ca.po b/po/ca.po
index 3a0246e..c43c21b 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -51,7 +51,7 @@
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
 "POT-Creation-Date: 2020-05-27 07:23+0800\n"
-"PO-Revision-Date: 2020-05-22 07:51+0200\n"
+"PO-Revision-Date: 2020-05-28 18:14+0200\n"
 "Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
 "Language-Team: Catalan\n"
 "Language: ca\n"
@@ -59,7 +59,7 @@
 "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.3\n"
+"X-Generator: Poedit 2.3.1\n"
 
 #: add-interactive.c:368
 #, c-format
@@ -222,7 +222,7 @@
 
 #: add-interactive.c:1032
 msgid "choose all items"
-msgstr "escolliu tots els ítems"
+msgstr "trieu tots els ítems"
 
 #: add-interactive.c:1034
 msgid "(empty) finish selecting"
@@ -304,9 +304,9 @@
 msgstr ""
 "y - fes «stage» d'aquest tros\n"
 "n - no facis «stage» d'aquest tros\n"
-"q - surt; no facis «stage» d'aquest tros o de cap altre restant\n"
-"a - fes «stage» d'aquest tros i tota la resta de trossos del fitxer\n"
-"d - no facis «stage» d'aquest tros o de cap altre restant del fitxer\n"
+"q - surt; no facis «stage» d'aquest tros ni de cap altre restant\n"
+"a - fes «stage» d'aquest tros i de tota la resta de trossos del fitxer\n"
+"d - no facis «stage» d'aquest tros ni de cap altre restant del fitxer\n"
 
 #: add-patch.c:55 git-add--interactive.perl:1433
 #, c-format, perl-format
@@ -341,9 +341,9 @@
 msgstr ""
 "y - fes «stash» d'aquest tros\n"
 "n - no facis «stash» d'aquest tros\n"
-"q - surt; no facis «stash» d'aquest tros o de cap altre restant\n"
-"a - fes «stash» d'aquest tros i tota la resta de trossos del fitxer\n"
-"d - no facis «stash» d'aquest tros o de cap altre restant del fitxer\n"
+"q - surt; no facis «stash» d'aquest tros ni de cap altre restant\n"
+"a - fes «stash» d'aquest tros i de tota la resta de trossos del fitxer\n"
+"d - no facis «stash» d'aquest tros ni de cap altre restant del fitxer\n"
 
 #: add-patch.c:78 git-add--interactive.perl:1438
 #, c-format, perl-format
@@ -378,9 +378,9 @@
 msgstr ""
 "y - fes «unstage» d'aquest tros\n"
 "n - no facis «unstage» d'aquest tros\n"
-"q - surt; no facis «unstage» d'aquest tros o de cap altre restant\n"
-"a - fes «unstage» d'aquest tros i tota la resta de trossos del fitxer\n"
-"d - no facis «unstage» d'aquest tros o de cap altre restant del fitxer\n"
+"q - surt; no facis «unstage» d'aquest tros ni de cap altre restant\n"
+"a - fes «unstage» d'aquest tros i de tota la resta de trossos del fitxer\n"
+"d - no facis «unstage» d'aquest tros ni de cap altre restant del fitxer\n"
 
 #: add-patch.c:100 git-add--interactive.perl:1443
 #, c-format, perl-format
@@ -390,7 +390,7 @@
 #: add-patch.c:101 git-add--interactive.perl:1444
 #, c-format, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
-msgstr "Aplica l'esborrat a l'índex [y,n,q,a,d%s,?]? "
+msgstr "Aplica la supressió a l'índex [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:102 git-add--interactive.perl:1445
 #, c-format, perl-format
@@ -423,19 +423,19 @@
 #: git-add--interactive.perl:1463
 #, c-format, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
-msgstr "Descarta el canvi de mode des de l'arbre de treball [y,n,q,a,d%s,?]? "
+msgstr "Descarta el canvi de mode de l'arbre de treball [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:123 git-add--interactive.perl:1449
 #: git-add--interactive.perl:1464
 #, c-format, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
-msgstr "Descarta l'esborrat des de l'arbre de treball [y,n,q,a,d%s,?]? "
+msgstr "Descarta suprimir de l'arbre de treball [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:124 git-add--interactive.perl:1450
 #: git-add--interactive.perl:1465
 #, c-format, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
-msgstr "Descarta aquest tros des de l'arbre de treball  [y,n,q,a,d%s,?]? "
+msgstr "Descarta aquest tros de l'arbre de treball [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:126 add-patch.c:148 add-patch.c:191
 msgid ""
@@ -454,7 +454,7 @@
 "d - do not discard this hunk or any of the later hunks in the file\n"
 msgstr ""
 "y - descarta aquest tros de l'arbre de treball\n"
-"n - no descartis aquest tros des de l'arbre de treball\n"
+"n - no descartis aquest tros de l'arbre de treball\n"
 "q - surt; no apliquis aquest tros ni cap dels pendents\n"
 "a - descarta aquest tros i tots els trossos posteriors en el fitxer\n"
 "d - no descartis aquest tros ni cap dels trossos posteriors en el fitxer\n"
@@ -463,20 +463,19 @@
 #, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
-"Descarta el canvi de mode des de l'índex i l'arbre de treball [y,n,q,a,d"
+"Descarta el canvi de mode de l'índex i de l'arbre de treball [y,n,q,a,d"
 "%s,?]? "
 
 #: add-patch.c:145 add-patch.c:188 git-add--interactive.perl:1454
 #, c-format, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
-msgstr ""
-"Descarta la supressió des de l'índex i l'arbre de treball [y,n,q,a,d%s,?]? "
+msgstr "Descarta suprimir de l'índex i de l'arbre de treball [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:146 add-patch.c:189 git-add--interactive.perl:1455
 #, c-format, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
-"Descarta aquest tros des de l'índex i l'arbre de treball [y,n,q,a,d%s,?]? "
+"Descarta aquest tros de l'índex i de l'arbre de treball [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:151
 msgid ""
@@ -486,8 +485,8 @@
 "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 - descarta aquest tros de l'arbre de treball\n"
-"n - no descartis aquest tros des de l'arbre de treball\n"
+"y - descarta aquest tros de l'índex i de l'arbre de treball\n"
+"n - no descartis aquest tros de l'índex ni de l'arbre de treball\n"
 "q - surt; no apliquis aquest tros ni cap dels pendents\n"
 "a - descarta aquest tros i tots els trossos posteriors en el fitxer\n"
 "d - no descartis aquest tros ni cap dels trossos posteriors en el fitxer\n"
@@ -496,17 +495,17 @@
 #, c-format, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
-"Aplica el canvi de mode a l'índex i l'arbre de treball [y,n,q,a,d%s,?]? "
+"Aplica el canvi de mode a l'índex i a l'arbre de treball [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:166 add-patch.c:209 git-add--interactive.perl:1459
 #, c-format, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Aplica la supressió a l'índex i l'arbre de treball [y,n,q,a,d%s,?]? "
+msgstr "Aplica la supressió a l'índex i a l'arbre de treball [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:167 add-patch.c:210 git-add--interactive.perl:1460
 #, c-format, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Aplica aquest tros a l'índex i l'arbre de treball [y,n,q,a,d%s,?]? "
+msgstr "Aplica aquest tros a l'índex i a l'arbre de treball [y,n,q,a,d%s,?]? "
 
 #: add-patch.c:172
 msgid ""
@@ -516,8 +515,8 @@
 "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 - aplica aquest tros a l'índex i l'arbre de treball\n"
-"n - no apliquis aquest tros des de l'índex i de l'arbre de treball\n"
+"y - aplica aquest tros a l'índex i a l'arbre de treball\n"
+"n - no apliquis aquest tros a l'índex ni a l'arbre de treball\n"
 "q - surt; no apliquis aquest tros ni cap dels pendents\n"
 "a - aplica aquest tros i tots els trossos posteriors en el fitxer\n"
 "d - no apliquis aquest tros ni cap dels trossos posteriors en el fitxer\n"
@@ -607,9 +606,9 @@
 "Lines starting with %c will be removed.\n"
 msgstr ""
 "---\n"
-"Per suprimir «%c» línies, convertiu-les a ' ' (context).\n"
-"Per suprimir «%c» línies, suprimiu-les.\n"
-"Les línies que comencin per %c seran suprimides.\n"
+"Per a eliminar les línies «%c», convertiu-les en línies ' ' (context).\n"
+"Per a eliminar les línies «%c», suprimiu-les.\n"
+"Les línies que comencin per %c s'eliminaran.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
 #: add-patch.c:1071 git-add--interactive.perl:1126
@@ -619,8 +618,7 @@
 "aborted and the hunk is left unchanged.\n"
 msgstr ""
 "Si no s'aplica correctament, tindreu una oportunitat per editar-lo\n"
-"de nou. Si totes les línies del tros se suprimeixen, llavors l'edició "
-"s'avorta\n"
+"de nou. Si s'eliminen totes les línies del tros, llavors l'edició s'avorta\n"
 "i el tros es deixa sense cap canvi.\n"
 
 #: add-patch.c:1104
@@ -629,7 +627,7 @@
 
 #: add-patch.c:1149
 msgid "'git apply --cached' failed"
-msgstr "'git apply --cached' ha fallat"
+msgstr "«git apply --cached» ha fallat"
 
 #. TRANSLATORS: do not translate [y/n]
 #. The program will only accept that input at this point.
@@ -698,7 +696,7 @@
 
 #: add-patch.c:1479 git-add--interactive.perl:1577
 msgid "go to which hunk (<ret> to see more)? "
-msgstr "vés a quin tros (<ret> per veure'n més)? "
+msgstr "vés a quin tros (<ret> per a veure'n més)? "
 
 #: add-patch.c:1480 git-add--interactive.perl:1579
 msgid "go to which hunk? "
@@ -793,7 +791,7 @@
 "as appropriate to mark resolution and make a commit."
 msgstr ""
 "Arregleu-los en l'arbre de treball, i després useu\n"
-"'git add/rm <fitxer>' segons sigui apropiat per a marcar la\n"
+"«git add/rm <fitxer>» segons sigui apropiat per a marcar la\n"
 "resolució i feu una comissió."
 
 #: advice.c:273
@@ -843,7 +841,7 @@
 "Si voleu crear una branca nova per a conservar les comissions que creeu,\n"
 "poder fer-ho (ara o més tard) usant -c amb l'ordre switch. Exemple:\n"
 "\n"
-"  git switch -b <nom-de-branca-nova>\n"
+"  git switch -c <nom-de-branca-nova>\n"
 "\n"
 "O desfer aquesta operació amb:\n"
 "\n"
@@ -1411,7 +1409,7 @@
 
 #: apply.c:4991
 msgid "mark new files with `git add --intent-to-add`"
-msgstr "marca els fitxers nous amb «git add --inten-to-add»"
+msgstr "marca els fitxers nous amb «git add --intent-to-add»"
 
 #: apply.c:4993
 msgid "apply a patch without touching the working tree"
@@ -1584,7 +1582,7 @@
 
 #: archive.c:432
 msgid "current working directory is untracked"
-msgstr "no es segueix el directori de treball actual"
+msgstr "no se segueix el directori de treball actual"
 
 #: archive.c:464
 msgid "fmt"
@@ -1677,7 +1675,7 @@
 #: archive.c:529
 #, c-format
 msgid "Argument not supported for format '%s': -%d"
-msgstr "Paràmetre no admès per al format «%s»: -%d"
+msgstr "Argument no admès per al format «%s»: -%d"
 
 #: attr.c:212
 #, c-format
@@ -1695,7 +1693,7 @@
 "Use '\\!' for literal leading exclamation."
 msgstr ""
 "Els patrons negatius s'ignoren en els atributs de git\n"
-"Useu '\\!' per exclamació capdavantera literal."
+"Useu «\\!» per exclamació capdavantera literal."
 
 #: bisect.c:468
 #, c-format
@@ -1867,7 +1865,7 @@
 "\n"
 "Després de corregir la causa de l'error, podeu\n"
 "intentar corregir la informació de seguiment remot\n"
-"invocant \"git branch --set-upstream-to=%s%s%s\"."
+"invocant «git branch --set-upstream-to=%s%s%s»."
 
 #: branch.c:67
 #, c-format
@@ -2053,7 +2051,7 @@
 
 #: bundle.c:280
 msgid "Could not spawn pack-objects"
-msgstr "No s'ha pogut executar el pack-objects"
+msgstr "No s'ha pogut generar el pack-objects"
 
 #: bundle.c:291
 msgid "pack-objects died"
@@ -2071,7 +2069,7 @@
 #: bundle.c:461 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
 #, c-format
 msgid "unrecognized argument: %s"
-msgstr "paràmetre no reconegut: %s"
+msgstr "argument no reconegut: %s"
 
 #: bundle.c:469
 msgid "Refusing to create empty bundle."
@@ -2124,9 +2122,9 @@
 msgstr "desplaçament %08x%08x del gràfic de comissions incorrecte"
 
 #: commit-graph.c:362
-#, fuzzy, c-format
+#, c-format
 msgid "commit-graph chunk id %08x appears multiple times"
-msgstr "id%08x del graf de comissions múltiples vegades"
+msgstr "id %08x del graf de comissions apareix múltiples vegades"
 
 #: commit-graph.c:436
 msgid "commit-graph has no base graphs chunk"
@@ -2140,7 +2138,7 @@
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr ""
-"la cadena del graf de comissions no és vàlida: la línea «%s» no és un hash"
+"la cadena del graf de comissions no és vàlida: la línia «%s» no és un hash"
 
 #: commit-graph.c:518
 msgid "unable to find all commit-graph files"
@@ -2185,7 +2183,7 @@
 
 #: commit-graph.c:1233
 msgid "Clearing commit marks in commit graph"
-msgstr "S'estan netejant les marques de comissions al graf de comissions"
+msgstr "S'estan esborrant les marques de comissions al graf de comissions"
 
 #: commit-graph.c:1252
 msgid "Computing commit graph generation numbers"
@@ -2374,7 +2372,7 @@
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr ""
 "El graf de comissions té un nombre de generació diferent de zero per a "
-"commisió %s però té zero en altres llocs"
+"comissió %s però té zero en altres llocs"
 
 #: commit-graph.c:2322
 #, c-format
@@ -2493,7 +2491,7 @@
 #: config.c:414
 #, c-format
 msgid "invalid key (newline): %s"
-msgstr "clau no vàlida (línea nova): %s"
+msgstr "clau no vàlida (línia nova): %s"
 
 #: config.c:450 config.c:462
 #, c-format
@@ -2568,7 +2566,7 @@
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
-"valor de configuració numèric «%s» erroni' per «%s» en el blob de submòdul "
+"valor de configuració numèric «%s» erroni per «%s» en el blob de submòdul "
 "%s: %s"
 
 #: config.c:1025
@@ -2924,7 +2922,7 @@
 
 #: connected.c:119
 msgid "Could not run 'git rev-list'"
-msgstr "No s'ha pogut executar 'git rev-list'"
+msgstr "No s'ha pogut executar «git rev-list»"
 
 #: connected.c:139
 msgid "failed write to rev-list"
@@ -2937,7 +2935,7 @@
 #: convert.c:194
 #, c-format
 msgid "illegal crlf_action %d"
-msgstr "crlf_action %d  il·legal"
+msgstr "crlf_action %d il·legal"
 
 #: convert.c:207
 #, c-format
@@ -2957,7 +2955,7 @@
 #: convert.c:217
 #, c-format
 msgid "LF would be replaced by CRLF in %s"
-msgstr "LF es reemplaçà per LF en %s"
+msgstr "LF es reemplaçà per CRLF en %s"
 
 #: convert.c:219
 #, c-format
@@ -2994,7 +2992,7 @@
 "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 ""
-"Falta una marca d'ordre de byte (BOM) al fitxer «%s» . Useu UTF-%sBE o UTF-"
+"Falta una marca d'ordre de byte (BOM) al fitxer «%s». Useu UTF-%sBE o UTF-"
 "%sLE (depenent de l'ordre de byte) com a codificacions d'arbre de treball."
 
 #: convert.c:419 convert.c:490
@@ -3038,7 +3036,7 @@
 
 #: convert.c:851
 msgid "path name too long for external filter"
-msgstr "el nom del camí és massa llarg per al filtre extern"
+msgstr "el nom del camí és massa gran per al filtre extern"
 
 #: convert.c:943
 #, c-format
@@ -3240,7 +3238,7 @@
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
 msgstr ""
-"Valor desconegut de la variable de configuració de 'diff.submodule': «%s»"
+"Valor desconegut de la variable de configuració de «diff.submodule»: «%s»"
 
 #: diff.c:465
 #, c-format
@@ -3248,7 +3246,7 @@
 "Found errors in 'diff.dirstat' config variable:\n"
 "%s"
 msgstr ""
-"S'han trobat errors en la variable de configuració 'diff.dirstat':\n"
+"S'han trobat errors en la variable de configuració «diff.dirstat»:\n"
 "%s"
 
 #: diff.c:4238
@@ -3316,12 +3314,12 @@
 #: diff.c:4961
 #, c-format
 msgid "bad --color-moved argument: %s"
-msgstr "paràmetre --color-moved incorrecte: %s"
+msgstr "argument --color-moved incorrecte: %s"
 
 #: diff.c:4980
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
-msgstr "mode «%s» no vàlid en -color-moved-ws"
+msgstr "mode «%s» no vàlid en --color-moved-ws"
 
 #: diff.c:5020
 msgid ""
@@ -3344,7 +3342,7 @@
 #: diff.c:5270
 #, c-format
 msgid "bad --word-diff argument: %s"
-msgstr "paràmetre --word-diff incorrecte: %s"
+msgstr "argument --word-diff incorrecte: %s"
 
 #: diff.c:5293
 msgid "Diff output format options"
@@ -3372,11 +3370,11 @@
 
 #: diff.c:5312
 msgid "synonym for '-p --raw'"
-msgstr "sinònim de per a «-p --raw»"
+msgstr "sinònim de «-p --raw»"
 
 #: diff.c:5316
 msgid "synonym for '-p --stat'"
-msgstr "sinònim de per a «-p --stat»"
+msgstr "sinònim de «-p --stat»"
 
 #: diff.c:5320
 msgid "machine friendly --stat"
@@ -3399,11 +3397,11 @@
 
 #: diff.c:5330
 msgid "synonym for --dirstat=cumulative"
-msgstr "sinònim per -dirstat=cumulative"
+msgstr "sinònim de --dirstat=cumulative"
 
 #: diff.c:5334
 msgid "synonym for --dirstat=files,param1,param2..."
-msgstr "sinònim per --dirstat=files,param1,param2..."
+msgstr "sinònim de --dirstat=files,param1,param2..."
 
 #: diff.c:5338
 msgid "warn if changes introduce conflict markers or whitespace errors"
@@ -3425,7 +3423,7 @@
 
 #: diff.c:5349
 msgid "<width>[,<name-width>[,<count>]]"
-msgstr "<width>[<name-width>[<count>]]"
+msgstr "<amplada>[<amplada-nom>[,<recompte>]]"
 
 #: diff.c:5350
 msgid "generate diffstat"
@@ -3461,7 +3459,7 @@
 
 #: diff.c:5368
 msgid "output a binary diff that can be applied"
-msgstr "diff amb sortida binaria que pot ser aplicada"
+msgstr "diff amb sortida binària que pot ser aplicada"
 
 #: diff.c:5371
 #, fuzzy
@@ -3474,17 +3472,15 @@
 msgstr "mostra un diff amb colors"
 
 #: diff.c:5374
-#, fuzzy
 msgid "<kind>"
 msgstr "<kind>"
 
 #: diff.c:5375
-#, fuzzy
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr ""
-"ressalta els errors d'espai en blanc a les línies «context» «old» o «new» al "
+"ressalta els errors d'espai en blanc a les línies «context», «old» o «new» al "
 "diff"
 
 #: diff.c:5378
@@ -3501,12 +3497,10 @@
 msgstr "<prefix>"
 
 #: diff.c:5382
-#, fuzzy
 msgid "show the given source prefix instead of \"a/\""
 msgstr "mostra el prefix d'origen donat en lloc de «a/»"
 
 #: diff.c:5385
-#, fuzzy
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "mostra el prefix de destinació indicat en lloc de «b/»"
 
@@ -3519,7 +3513,6 @@
 msgstr "no mostris cap prefix d'origen o destí"
 
 #: diff.c:5394
-#, fuzzy
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 "mostra el context entre trossos de diferència fins al nombre especificat de "
@@ -3585,17 +3578,16 @@
 msgstr "continua llistant l'històric d'un fitxer més enllà dels canvis de nom"
 
 #: diff.c:5439
-#, fuzzy
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr ""
-"Evita la detecció de canvi de nom/còpia si el nombre d'objectius de canvi de "
-"nom supera el límit indicat"
+"Evita la detecció de canvi de nom/còpia si el nombre d'objectius de canvi de nom/còpia "
+"supera el límit indicat"
 
 #: diff.c:5441
 msgid "Diff algorithm options"
-msgstr "Opcions d'algorisme Diff"
+msgstr "Opcions de l'algorisme Diff"
 
 #: diff.c:5443
 msgid "produce the smallest possible diff"
@@ -3603,7 +3595,7 @@
 
 #: diff.c:5446
 msgid "ignore whitespace when comparing lines"
-msgstr "ignora els espai en blanc en comparar línies"
+msgstr "ignora els espais en blanc en comparar línies"
 
 #: diff.c:5449
 msgid "ignore changes in amount of whitespace"
@@ -3622,10 +3614,9 @@
 msgstr "ignora els canvis en línies que estan en blanc"
 
 #: diff.c:5461
-#, fuzzy
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
-"heurística per canviar els límits del tros de diferència per a lectura fàcil"
+"heurística per a desplaçar els límits del tros de diferència per a una lectura fàcil"
 
 #: diff.c:5464
 msgid "generate diff using the \"patience diff\" algorithm"
@@ -3641,7 +3632,7 @@
 
 #: diff.c:5471
 msgid "choose a diff algorithm"
-msgstr "escolliu un algorisme pel diff"
+msgstr "trieu un algorisme per al diff"
 
 #: diff.c:5473
 msgid "<text>"
@@ -4070,7 +4061,7 @@
 
 #: fetch-pack.c:1211
 msgid "Server does not support shallow requests"
-msgstr "El servidor no permet peticions superficials"
+msgstr "El servidor no permet sol·licituds superficials"
 
 #: fetch-pack.c:1218
 msgid "Server supports filter"
@@ -4078,7 +4069,7 @@
 
 #: fetch-pack.c:1242
 msgid "unable to write request to remote"
-msgstr "no s'ha pogut escriure la petició al remot"
+msgstr "no s'ha pogut escriure la sol·licitud al remot"
 
 #: fetch-pack.c:1260
 #, c-format
@@ -4102,11 +4093,11 @@
 
 #: fetch-pack.c:1342
 msgid "expected packfile to be sent after 'ready'"
-msgstr "s'espera l'enviament del fitxer de paquet després de «ready»"
+msgstr "s'esperava l'enviament del fitxer de paquet després de «ready»"
 
 #: fetch-pack.c:1344
 msgid "expected no other sections to be sent after no 'ready'"
-msgstr "s'espera que cap altra seccions s'enviï després de no «ready»"
+msgstr "s'esperava que no s'enviés cap altra secció després de no «ready»"
 
 #: fetch-pack.c:1386
 #, c-format
@@ -4209,17 +4200,14 @@
 msgstr "col·laborar (vegeu també: git help workflow)"
 
 #: help.c:31
-#, fuzzy
 msgid "Main Porcelain Commands"
 msgstr "Ordres principals de porcellana"
 
 #: help.c:32
-#, fuzzy
 msgid "Ancillary Commands / Manipulators"
-msgstr "Ordres Auxiliars / Manipuladors"
+msgstr "Ordres auxiliars / manipuladors"
 
 #: help.c:33
-#, fuzzy
 msgid "Ancillary Commands / Interrogators"
 msgstr "Ordres auxiliars / interrogadors"
 
@@ -4477,7 +4465,7 @@
 "may have crashed in this repository earlier:\n"
 "remove the file manually to continue."
 msgstr ""
-"No s'ha pogut crear '%s.lock': %s.\n"
+"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"
@@ -4586,8 +4574,7 @@
 #, c-format
 msgid "Failed to merge submodule %s (merge following commits not found)"
 msgstr ""
-"Ha fallat en fusionar el submòdul  %s (no s'ha trobat les comissions "
-"següents)"
+"Ha fallat en fusionar el submòdul %s (no s'ha trobat les comissions següents)"
 
 #: merge-recursive.c:1255
 #, c-format
@@ -4611,7 +4598,7 @@
 msgstr ""
 "Si això és correcte simplement afegiu-ho a l'índex per exemple utilitzant "
 "git update-index --cacheinfo 160000 per cents \"%s\" que acceptaran aquest "
-"suggeriment."
+"suggeriment.\n"
 
 #: merge-recursive.c:1268
 #, c-format
@@ -5050,9 +5037,8 @@
 msgstr "no s'han vist caure els paquets del fitxer"
 
 #: midx.c:925
-#, fuzzy
 msgid "no pack files to index."
-msgstr "Afegint fitxers de paquets a multi-index"
+msgstr "no hi ha fitxers empaquetats a indexar."
 
 #: midx.c:977
 #, fuzzy
@@ -5066,7 +5052,7 @@
 
 #: midx.c:1112
 msgid "Looking for referenced packfiles"
-msgstr "S'estan cercant fitxers de paquets referenciats"
+msgstr "S'estan cercant fitxers empaquetats referenciats"
 
 #: midx.c:1127
 #, fuzzy, c-format
@@ -5124,7 +5110,7 @@
 
 #: midx.c:1433
 msgid "could not start pack-objects"
-msgstr "no s'ha pogut executar el pack-objects"
+msgstr "no s'ha pogut iniciar el pack-objects"
 
 #: midx.c:1452
 msgid "could not finish pack-objects"
@@ -5205,14 +5191,14 @@
 msgstr "no s'ha pogut analitzar l'objecte: %s"
 
 #: object.c:266 object.c:278
-#, fuzzy, c-format
+#, c-format
 msgid "hash mismatch %s"
-msgstr "els resums no coincideixen"
+msgstr "el resum no coincideix %s"
 
 #: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2135
-#, fuzzy, c-format
+#, c-format
 msgid "unable to get size of %s"
-msgstr "no s'ha pogut obtenir la mida dels percentatges"
+msgstr "no s'ha pogut obtenir la mida de %s"
 
 #: packfile.c:629
 msgid "offset before end of packfile (broken .idx?)"
@@ -5325,7 +5311,7 @@
 #: parse-options.c:907
 #, c-format
 msgid "   or: %s"
-msgstr " o: %s"
+msgstr "   o: %s"
 
 #: parse-options.c:910
 #, c-format
@@ -5381,7 +5367,7 @@
 #: pathspec.c:327
 #, c-format
 msgid "Invalid pathspec magic '%.*s' in '%s'"
-msgstr "Màgia d'especificació de camí no vàlida '%.*s' en «%s»"
+msgstr "Màgia d'especificació de camí no vàlida «%.*s» en «%s»"
 
 #: pathspec.c:332
 #, c-format
@@ -5728,7 +5714,7 @@
 msgstr "no s'ha pogut desenllaçar: %s"
 
 #: read-cache.c:3179
-#, fuzzy, c-format
+#, c-format
 msgid "cannot fix permission bits on '%s'"
 msgstr "no s'han pogut corregir els bits de permisos en «%s»"
 
@@ -5743,8 +5729,9 @@
 "continue'.\n"
 "Or you can abort the rebase with 'git rebase --abort'.\n"
 msgstr ""
-"Podeu arreglar això amb 'git rebase --edit-todo' i després 'git rebase --"
-"continue'.\n"
+"Podeu arreglar-ho amb «git rebase --edit-todo» i després «git rebase --"
+"continue».\n"
+"O bé, podeu avortar el «rebase» amb «git rebase --abort».\n"
 
 #: rebase-interactive.c:33
 #, c-format
@@ -5776,9 +5763,26 @@
 "\n"
 "These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
-"Les ordres p select <commit> = fa servir «commit» (commit) «commit» (commit) "
-"«commit» (commit) «commit» (commit) «commit» (commit)"
-
+"\n"
+"Ordres:\n"
+" p, pick <comissió> = usa la comissió\n"
+" r, reword <comissió> = usa la comissió, però edita el missatge de comissió\n"
+" e, edit <comissió> = usa la comissió, però atura't per a esmenar\n"
+" s, squash <comissió> = usa la comissió, però fusiona-la a la comissió prèvia\n"
+" f, fixup <comissió> = com a «squash», però descarta el missatge de registre d'aquesta "
+"comissió\n"
+"x, exec <comissió> = executa l'ordre (la resta de la línia) usant l'intèrpret "
+"d'ordres\n"
+"b, break = atura't aquí (continua fent «rebase» després amb «git rebase --continue»)\n"
+"d, drop <comissió> = elimina la comissió\n"
+"l, label <etiqueta> = etiqueta la HEAD actual amb un nom\n"
+"t, reset <etiqueta> = reinicia HEAD a una etiqueta    \n"
+"m, merge [-C <comissió> | -c <comissió>] <etiqueta> [# <oneline>]\n"
+".       crea una comissió de fusió usant el missatge de la comissió\n"
+".       de fusió original (o línia única, si no hi ha cap comissió de fusió original\n"
+".       especificada). Useu -c <comissió> per a reescriure el missatge de publicació.\n"
+"\n"
+"Es pot canviar l'ordre d'aquestes línies; s'executen de dalt a baix.\n"
 #: rebase-interactive.c:63
 #, c-format
 msgid "Rebase %s onto %s (%d command)"
@@ -5915,37 +5919,37 @@
 #: ref-filter.c:195
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
-msgstr "paràmetre %%(%s) desconegut: %s"
+msgstr "argument %%(%s) desconegut: %s"
 
 #: ref-filter.c:250
 #, c-format
 msgid "%%(objecttype) does not take arguments"
-msgstr "%%(subject) no accepta paràmetres"
+msgstr "%%(objecttype) no accepta arguments"
 
 #: ref-filter.c:272
 #, c-format
 msgid "unrecognized %%(objectsize) argument: %s"
-msgstr "paràmetre %%(objectsize) no reconegut: %s"
+msgstr "argument %%(objectsize) no reconegut: %s"
 
 #: ref-filter.c:280
 #, c-format
 msgid "%%(deltabase) does not take arguments"
-msgstr "%%(deltabase) no accepta paràmetres"
+msgstr "%%(deltabase) no accepta arguments"
 
 #: ref-filter.c:292
 #, c-format
 msgid "%%(body) does not take arguments"
-msgstr "%%(body) no accepta paràmetres"
+msgstr "%%(body) no accepta arguments"
 
 #: ref-filter.c:301
 #, c-format
 msgid "%%(subject) does not take arguments"
-msgstr "%%(subject) no accepta paràmetres"
+msgstr "%%(subject) no accepta arguments"
 
 #: ref-filter.c:323
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
-msgstr "paràmetre %%(trailers) desconegut: %s"
+msgstr "argument %%(trailers) desconegut: %s"
 
 #: ref-filter.c:352
 #, c-format
@@ -5955,7 +5959,7 @@
 #: ref-filter.c:354
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
-msgstr "paràmetre %%(contents) no reconegut: %s"
+msgstr "argument %%(contents) no reconegut: %s"
 
 #: ref-filter.c:369
 #, c-format
@@ -5965,7 +5969,7 @@
 #: ref-filter.c:373
 #, c-format
 msgid "unrecognized %%(objectname) argument: %s"
-msgstr "paràmetre %%(objectname) no reconegut: %s"
+msgstr "argument %%(objectname) no reconegut: %s"
 
 #: ref-filter.c:403
 #, c-format
@@ -5985,7 +5989,7 @@
 #: ref-filter.c:431
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
-msgstr "paràmetre %%(align) no reconegut: %s"
+msgstr "argument %%(align) no reconegut: %s"
 
 #: ref-filter.c:439
 #, c-format
@@ -5995,7 +5999,7 @@
 #: ref-filter.c:457
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
-msgstr "paràmetre %%(if) no reconegut: %s"
+msgstr "argument %%(if) no reconegut: %s"
 
 #: ref-filter.c:559
 #, c-format
@@ -6450,7 +6454,7 @@
 #: remote.c:2016
 #, c-format
 msgid "  (use \"%s\" for details)\n"
-msgstr "  (useu  «%s» per detalls)\n"
+msgstr "  (useu «%s» per a detalls)\n"
 
 #: remote.c:2020
 #, c-format
@@ -6461,7 +6465,7 @@
 
 #: remote.c:2026
 msgid "  (use \"git push\" to publish your local commits)\n"
-msgstr "  (useu \"git push\" per a publicar les vostres comissions locals)\n"
+msgstr "  (useu «git push» per a publicar les vostres comissions locals)\n"
 
 #: remote.c:2029
 #, c-format
@@ -6713,7 +6717,7 @@
 #: sequencer.c:316 builtin/rebase.c:743 builtin/rebase.c:1582 builtin/rm.c:385
 #, c-format
 msgid "could not remove '%s'"
-msgstr "no s'ha pogut suprimir «%s»"
+msgstr "no s'ha pogut eliminar «%s»"
 
 #: sequencer.c:326
 msgid "revert"
@@ -6739,7 +6743,7 @@
 "with 'git add <paths>' or 'git rm <paths>'"
 msgstr ""
 "després de resoldre els conflictes, marqueu els camins\n"
-"corregits amb 'git add <camins>' o 'git rm <camins>'"
+"corregits amb «git add <camins>» o «git rm <camins>»"
 
 #: sequencer.c:393
 msgid ""
@@ -6748,8 +6752,8 @@
 "and commit the result with 'git commit'"
 msgstr ""
 "després de resoldre els conflictes, marqueu els camins\n"
-"corregits amb 'git add <camins>' o 'git rm <camins>'\n"
-"i cometeu el resultat amb 'git commit'"
+"corregits amb «git add <camins>» o «git rm <camins>»\n"
+"i cometeu el resultat amb «git commit»"
 
 #: sequencer.c:406 sequencer.c:2921
 #, c-format
@@ -6839,7 +6843,7 @@
 #: sequencer.c:809
 #, c-format
 msgid "unknown variable '%s'"
-msgstr "variable  «%s» desconeguda"
+msgstr "variable «%s» desconeguda"
 
 #: sequencer.c:814
 msgid "missing 'GIT_AUTHOR_NAME'"
@@ -6932,8 +6936,8 @@
 "Comproveu que siguin correctes. Podeu suprimir aquest\n"
 "missatge establint-los explícitament:\n"
 "\n"
-"    git config --global user.name \"El Vostre Nom\"\n"
-"    git config --global user.email tu@example.com\n"
+"    git config --global user.name \"El vostre nom\"\n"
+"    git config --global user.email usuari@example.com\n"
 "\n"
 "Després de fer això, podeu arreglar la identitat usada per a aquesta\n"
 "comissió amb:\n"
@@ -7116,12 +7120,12 @@
 #: sequencer.c:2114
 #, c-format
 msgid "%s does not accept arguments: '%s'"
-msgstr "%s no accepta paràmetres: «%s»"
+msgstr "%s no accepta arguments: «%s»"
 
 #: sequencer.c:2123
 #, c-format
 msgid "missing arguments for %s"
-msgstr "falten els arguments per %s"
+msgstr "falten els arguments per a %s"
 
 #: sequencer.c:2154
 #, c-format
@@ -7515,7 +7519,7 @@
 
 #: sequencer.c:4111
 msgid "could not read 'onto'"
-msgstr "no s'ha pogut llegir 'onto'"
+msgstr "no s'ha pogut llegir «onto»"
 
 #: sequencer.c:4125
 #, c-format
@@ -7624,15 +7628,15 @@
 "Use '--' to separate paths from revisions, like this:\n"
 "'git <command> [<revision>...] -- [<file>...]'"
 msgstr ""
-"paràmetre ambigu «%s»: revisió no coneguda o el camí no és en l'arbre de "
+"argument ambigu «%s»: revisió no coneguda o el camí no és en l'arbre de "
 "treball.\n"
 "Useu «--» per a separar els camins de les revisions:\n"
-"'git <ordre> [<revisió>...] -- [<fitxer>...]'"
+"«git <ordre> [<revisió>...] -- [<fitxer>...]»"
 
 #: setup.c:264
 #, c-format
 msgid "option '%s' must come before non-option arguments"
-msgstr "l'opció «%s» ha de venir abans dels arguments opcionals"
+msgstr "l'opció «%s» ha d'aparèixer abans que els arguments opcionals"
 
 #: setup.c:283
 #, c-format
@@ -7641,9 +7645,9 @@
 "Use '--' to separate paths from revisions, like this:\n"
 "'git <command> [<revision>...] -- [<file>...]'"
 msgstr ""
-"paràmetre ambigu «%s»: ambdós una revisió i un nom de fitxer\n"
-"Useu '--' per a separar els camins de les revisions:\n"
-"'git <ordre> [<revisió>...] -- [<fitxer>...]'"
+"argument ambigu «%s»: ambdós una revisió i un nom de fitxer\n"
+"Useu «--» per a separar els camins de les revisions:\n"
+"«git <ordre> [<revisió>...] -- [<fitxer>...]»"
 
 #: setup.c:419
 msgid "unable to set up work tree using invalid config"
@@ -7672,7 +7676,7 @@
 #: setup.c:598
 #, c-format
 msgid "too large to be a .git file: '%s'"
-msgstr "massa larg per a ser un fitxer .git: «%s»"
+msgstr "massa llarg per a ser un fitxer .git: «%s»"
 
 #: setup.c:600
 #, c-format
@@ -7763,7 +7767,7 @@
 
 #: setup.c:1324
 msgid "setsid failed"
-msgstr "l'«stash» ha fallat"
+msgstr "«setsid» ha fallat"
 
 #: sha1-file.c:470
 #, c-format
@@ -7810,7 +7814,7 @@
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
-"Encara no se suporta el dipòsit de referència «%s» com a agafament enllaçat."
+"encara no s'admet el dipòsit de referència «%s» com a agafament enllaçat."
 
 #: sha1-file.c:730
 #, c-format
@@ -8259,13 +8263,13 @@
 msgstr "l'entrada del submòdul «%s» (%s) és a %s, no és una comissió"
 
 #: submodule.c:995
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
 "submodule %s"
 msgstr ""
 "No s'ha pogut executar l'ordre «git rev-list <commits> --not --remotes -n 1» "
-"en els submòdul %s"
+"en el submòdul %s"
 
 #: submodule.c:1118
 #, fuzzy, c-format
@@ -8287,9 +8291,9 @@
 msgstr "No s'ha pogut prémer el submòdul «%s»"
 
 #: submodule.c:1453
-#, fuzzy, c-format
+#, c-format
 msgid "Fetching submodule %s%s\n"
-msgstr "Obtenint submòdul %s%s\n"
+msgstr "S'està obtenint el submòdul %s%s\n"
 
 #: submodule.c:1483
 #, c-format
@@ -8313,12 +8317,12 @@
 #: submodule.c:1679
 #, c-format
 msgid "Could not run 'git status --porcelain=2' in submodule %s"
-msgstr "No s'ha pogut executar «git status --porcelain=2» en els submòdul %s"
+msgstr "No s'ha pogut executar «git status --porcelain=2» en el submòdul %s"
 
 #: submodule.c:1720
 #, c-format
 msgid "'git status --porcelain=2' failed in submodule %s"
-msgstr "«git status --porcelain=2» ha fallat en els submòdul %s"
+msgstr "«git status --porcelain=2» ha fallat en el submòdul %s"
 
 #: submodule.c:1800
 #, c-format
@@ -8328,7 +8332,7 @@
 #: submodule.c:1813
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
-msgstr "no s'ha pogut executar 'git status' al submòdul «%s»"
+msgstr "no s'ha pogut executar «git status» al submòdul «%s»"
 
 #: submodule.c:1828
 #, fuzzy, c-format
@@ -8358,7 +8362,7 @@
 #: submodule.c:2038
 #, c-format
 msgid "submodule git dir '%s' is inside git dir '%.*s'"
-msgstr "submodule git dir «%s» està dins git dir '%.*s'"
+msgstr "submodule git dir «%s» està dins git dir «%.*s»"
 
 #: submodule.c:2059
 #, c-format
@@ -8417,7 +8421,7 @@
 #: trailer.c:730
 #, c-format
 msgid "empty trailer token in trailer '%.*s'"
-msgstr "testimoni de remolc buit en el remolc '%.*s'"
+msgstr "testimoni de remolc buit en el remolc «%.*s»"
 
 #: trailer.c:750
 #, c-format
@@ -9014,7 +9018,7 @@
 
 #: urlmatch.c:163
 msgid "invalid URL scheme name or missing '://' suffix"
-msgstr "l'esquema d'URL no és vàlid o li manca el sufix '://'"
+msgstr "l'esquema d'URL no és vàlid o li manca el sufix «://»"
 
 #: urlmatch.c:187 urlmatch.c:346 urlmatch.c:405
 #, c-format
@@ -9023,11 +9027,11 @@
 
 #: urlmatch.c:215
 msgid "missing host and scheme is not 'file:'"
-msgstr "manca la màquina i l'esquema no és 'file:'"
+msgstr "manca la màquina i l'esquema no és «file:»"
 
 #: urlmatch.c:232
 msgid "a 'file:' URL may not have a port number"
-msgstr "un URL 'file:' no pot tenir número de port"
+msgstr "un URL «file:» no pot tenir número de port"
 
 #: urlmatch.c:247
 msgid "invalid characters in host name"
@@ -9039,7 +9043,7 @@
 
 #: urlmatch.c:371
 msgid "invalid '..' path segment"
-msgstr "segment de camí '..' no vàlid"
+msgstr "segment de camí «..» no vàlid"
 
 #: walker.c:170
 #, fuzzy
@@ -9107,21 +9111,21 @@
 
 #: wt-status.c:193 wt-status.c:225
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
-msgstr "  (useu \"git rm --cached <fitxer>...\" per a fer «unstage»)"
+msgstr "  (useu «git rm --cached <fitxer>...» per a fer «unstage»)"
 
 #: wt-status.c:197
 msgid "  (use \"git add <file>...\" to mark resolution)"
-msgstr "  (useu \"git add <fitxer>...\" per a senyalar resolució)"
+msgstr "  (useu «git add <fitxer>...» per a senyalar resolució)"
 
 #: wt-status.c:199 wt-status.c:203
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr ""
-"  (useu \"git add/rm <fitxer>...\" segons sigui apropiat per a senyalar "
+"  (useu «git add/rm <fitxer>...» segons sigui apropiat per a senyalar "
 "resolució)"
 
 #: wt-status.c:201
 msgid "  (use \"git rm <file>...\" to mark resolution)"
-msgstr "  (useu \"git rm <fitxer>...\" per a senyalar resolució)"
+msgstr "  (useu «git rm <fitxer>...» per a senyalar resolució)"
 
 #: wt-status.c:211 wt-status.c:1072
 msgid "Changes to be committed:"
@@ -9133,11 +9137,11 @@
 
 #: wt-status.c:238
 msgid "  (use \"git add <file>...\" to update what will be committed)"
-msgstr "  (useu \"git add <fitxer>...\" per a actualitzar què es cometrà)"
+msgstr "  (useu «git add <fitxer>...» per a actualitzar què es cometrà)"
 
 #: wt-status.c:240
 msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
-msgstr "  (useu \"git add/rm <fitxer>...\" per a actualitzar què es cometrà)"
+msgstr "  (useu «git add/rm <fitxer>...» per a actualitzar què es cometrà)"
 
 #: wt-status.c:241
 #, fuzzy
@@ -9155,7 +9159,7 @@
 #: wt-status.c:254
 #, c-format
 msgid "  (use \"git %s <file>...\" to include in what will be committed)"
-msgstr "  (useu «git %s <fitxer>...» per a incloure-ho en el que es cometrà)"
+msgstr "  (useu «git %s <fitxer>...» per a incloure-ho en la comissió)"
 
 #: wt-status.c:268
 msgid "both deleted:"
@@ -9249,7 +9253,7 @@
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
 msgstr ""
-"No modifiqueu o suprimiu la línia de dalt.\n"
+"No modifiqueu ni elimineu la línia de dalt.\n"
 "Tot el que hi ha a sota s'ignorarà."
 
 #: wt-status.c:1112
@@ -9268,11 +9272,11 @@
 
 #: wt-status.c:1145
 msgid "  (fix conflicts and run \"git commit\")"
-msgstr "  (arregleu els conflictes i executeu \"git commit\")"
+msgstr "  (arregleu els conflictes i executeu «git commit»)"
 
 #: wt-status.c:1147
 msgid "  (use \"git merge --abort\" to abort the merge)"
-msgstr "  (useu \"git merge --abort\" per a avortar la fusió)"
+msgstr "  (useu «git merge --abort» per a avortar la fusió)"
 
 #: wt-status.c:1151
 msgid "All conflicts fixed but you are still merging."
@@ -9280,7 +9284,7 @@
 
 #: wt-status.c:1154
 msgid "  (use \"git commit\" to conclude merge)"
-msgstr "  (useu \"git commit\" per a concloure la fusió)"
+msgstr "  (useu «git commit» per a concloure la fusió)"
 
 #: wt-status.c:1163
 msgid "You are in the middle of an am session."
@@ -9292,15 +9296,15 @@
 
 #: wt-status.c:1170
 msgid "  (fix conflicts and then run \"git am --continue\")"
-msgstr "  (arregleu els conflictes i després executeu \"git am --continue\")"
+msgstr "  (arregleu els conflictes i després executeu «git am --continue»)"
 
 #: wt-status.c:1172
 msgid "  (use \"git am --skip\" to skip this patch)"
-msgstr "  (useu \"git am --skip\" per a ometre aquest pedaç)"
+msgstr "  (useu «git am --skip» per a ometre aquest pedaç)"
 
 #: wt-status.c:1174
 msgid "  (use \"git am --abort\" to restore the original branch)"
-msgstr "  (useu \"git am --abort\" per a restaurar la branca original)"
+msgstr "  (useu «git am --abort» per a restaurar la branca original)"
 
 #: wt-status.c:1307
 msgid "git-rebase-todo is missing."
@@ -9335,7 +9339,7 @@
 
 #: wt-status.c:1339
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
-msgstr "  (useu \"git rebase --edit-todo\" per a veure i editar)"
+msgstr "  (useu «git rebase --edit-todo» per a veure i editar)"
 
 #: wt-status.c:1351
 #, c-format
@@ -9378,8 +9382,8 @@
 #: wt-status.c:1392
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
-"  (Una vegada que el vostre directori de treball sigui net, executeu \"git "
-"rebase --continue\")"
+"  (Una vegada que el vostre directori de treball sigui net, executeu «git "
+"rebase --continue»)"
 
 #: wt-status.c:1396
 #, c-format
@@ -9394,13 +9398,13 @@
 
 #: wt-status.c:1404
 msgid "  (use \"git commit --amend\" to amend the current commit)"
-msgstr "  (useu \"git commit --amend\" per a esmenar la comissió actual)"
+msgstr "  (useu «git commit --amend» per a esmenar la comissió actual)"
 
 #: wt-status.c:1406
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
-"  (useu \"git rebase --continue\" una vegada que estigueu satisfet amb els "
+"  (useu «git rebase --continue» una vegada que estigueu satisfet amb els "
 "vostres canvis)"
 
 #: wt-status.c:1417
@@ -9417,9 +9421,8 @@
 msgstr "  (arregleu els conflictes i executeu «git cherry-pick --continue»)"
 
 #: wt-status.c:1430
-#, fuzzy
 msgid "  (run \"git cherry-pick --continue\" to continue)"
-msgstr "(executa \"git cherry-pick --continue\" per continuar)"
+msgstr "  (executeu «git cherry-pick --continue» per a continuar)"
 
 #: wt-status.c:1433
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
@@ -9434,7 +9437,7 @@
 #: wt-status.c:1437
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
-"  (useu \"git cherry-pick --abort\" per a cancel·lar l'operació de «cherry "
+"  (useu «git cherry-pick --abort» per a cancel·lar l'operació de «cherry "
 "pick»)"
 
 #: wt-status.c:1447
@@ -9448,27 +9451,24 @@
 
 #: wt-status.c:1456
 msgid "  (fix conflicts and run \"git revert --continue\")"
-msgstr "  (arregleu els conflictes i executeu \"git revert --continue\")"
+msgstr "  (arregleu els conflictes i executeu «git revert --continue»)"
 
 #: wt-status.c:1459
-#, fuzzy
 msgid "  (run \"git revert --continue\" to continue)"
-msgstr "(executa \"git revert --continue\" per continuar)"
+msgstr "  (executeu «git revert --continue» per a continuar)"
 
 #: wt-status.c:1462
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr ""
-"  (tots els conflictes estan arreglats: executeu \"git revert --continue\")"
+"  (tots els conflictes estan arreglats: executeu «git revert --continue»)"
 
 #: wt-status.c:1464
-#, fuzzy
 msgid "  (use \"git revert --skip\" to skip this patch)"
-msgstr "(useu \"git revert --skip\" per ometre aquest pedaç)"
+msgstr "  (useu «git revert --skip» per a ometre aquest pedaç)"
 
 #: wt-status.c:1466
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
-msgstr ""
-"  (useu \"git revert --abort\" per a cancel·lar l'operació de reversió)"
+msgstr "  (useu «git revert --abort» per a cancel·lar l'operació de reversió)"
 
 #: wt-status.c:1476
 #, c-format
@@ -9481,7 +9481,7 @@
 
 #: wt-status.c:1483
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
-msgstr "  (useu \"git bisect reset\" per a tornar a la branca original)"
+msgstr "  (useu «git bisect reset» per a tornar a la branca original)"
 
 #: wt-status.c:1692
 msgid "On branch "
@@ -9523,9 +9523,9 @@
 "new files yourself (see 'git help status')."
 msgstr ""
 "Ha trigat %.2f segons enumerar els fitxers no seguits.\n"
-"'status -uno' pot accelerar-ho, però heu d'anar amb compte de no\n"
+"«status -uno» pot accelerar-ho, però heu d'anar amb compte de no\n"
 "oblidar-vos d'afegir fitxers nous vosaltres mateixos (vegeu\n"
-"'git help status')."
+"«git help status»)."
 
 #: wt-status.c:1755
 #, c-format
@@ -9543,8 +9543,7 @@
 #: wt-status.c:1768
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
-msgstr ""
-"no hi ha canvis afegits a cometre (useu \"git add\" o \"git commit -a\")\n"
+msgstr "no hi ha canvis afegits a cometre (useu «git add» o «git commit -a»)\n"
 
 #: wt-status.c:1771
 #, c-format
@@ -9780,12 +9779,12 @@
 "\n"
 "\tgit submodule add <url> %s\n"
 "\n"
-"Si heu afegit aquest camí per error, podeu suprimir-lo de\n"
+"Si heu afegit aquest camí per error, podeu eliminar-lo de\n"
 "l'índex amb:\n"
 "\n"
 "\tgit rm --cached %s\n"
 "\n"
-"Vegeu \"git help submodule\" per a més informació."
+"Vegeu «git help submodule» per a més informació."
 
 #: builtin/add.c:391
 #, c-format
@@ -9916,20 +9915,19 @@
 #: builtin/am.c:1089
 #, c-format
 msgid "When you have resolved this problem, run \"%s --continue\"."
-msgstr "Quan hàgiu resolt aquest problema, executeu \"%s --continue\"."
+msgstr "Quan hàgiu resolt aquest problema, executeu «%s --continue»."
 
 #: builtin/am.c:1090
 #, c-format
 msgid "If you prefer to skip this patch, run \"%s --skip\" instead."
-msgstr ""
-"Si preferiu ometre aquest pedaç, executeu \"%s --skip\" en lloc d'això."
+msgstr "Si preferiu ometre aquest pedaç, executeu «%s --skip» en lloc d'això."
 
 #: builtin/am.c:1091
 #, c-format
 msgid "To restore the original branch and stop patching, run \"%s --abort\"."
 msgstr ""
-"Per a restaurar la branca original i deixar d'apedaçar, executeu \"%s --abort"
-"\"."
+"Per a restaurar la branca original i deixar d'apedaçar, executeu «%s --"
+"abort»."
 
 #: builtin/am.c:1174
 #, fuzzy
@@ -10035,7 +10033,7 @@
 "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 ""
-"Cap canvi - heu oblidat d'usar 'git add'?\n"
+"Cap canvi - heu oblidat d'usar «git add»?\n"
 "Si no hi ha res per fer «stage», probablement alguna altra cosa ja ha\n"
 "introduït els mateixos canvis; potser voleu ometre aquest pedaç."
 
@@ -10047,9 +10045,9 @@
 "You might run `git rm` on a file to accept \"deleted by them\" for it."
 msgstr ""
 "Encara teniu camins sense fusionar a l'índex.\n"
-"Heu de fer 'git add' a cada fitxer amb conflictes resolts per marcar-los com "
-"a tal.\n"
-"Podeu executar `git rm` en un fitxer per acceptar \"suprimit per ells\" pel "
+"Heu de fer «git add» a cada fitxer amb conflictes resolts per a marcar-los "
+"com a tal.\n"
+"Podeu executar «git rm» en un fitxer per a acceptar «suprimit per ells» pel "
 "fitxer."
 
 #: builtin/am.c:1928 builtin/am.c:1932 builtin/am.c:1944 builtin/reset.c:347
@@ -10067,7 +10065,7 @@
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
 msgstr ""
-"Sembla que heu mogut HEAD després de l'última fallada de 'am'.\n"
+"Sembla que heu mogut HEAD després de l'última fallada de «am».\n"
 "No s'està rebobinant a ORIG_HEAD"
 
 #: builtin/am.c:2131
@@ -10247,7 +10245,7 @@
 "Use \"git am --abort\" to remove it."
 msgstr ""
 "S'ha trobat un directori %s extraviat.\n"
-"Useu \"git am --abort\" per a eliminar-lo."
+"Useu «git am --abort» per a eliminar-lo."
 
 #: builtin/am.c:2370
 msgid "Resolve operation not in progress, we are not resuming."
@@ -10396,9 +10394,9 @@
 msgstr "Arguments de bisectriu incorrectes"
 
 #: builtin/bisect--helper.c:221
-#, fuzzy, c-format
+#, c-format
 msgid "couldn't get the oid of the rev '%s'"
-msgstr "no s'ha pogut obtenir l'oide de la revista '%s'"
+msgstr "no s'ha pogut obtenir l'oid de la revisió «%s»"
 
 #: builtin/bisect--helper.c:233
 #, fuzzy, c-format
@@ -10426,9 +10424,9 @@
 "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 ""
-"Heu de començar per \"git bisect start\". Després heu de donar-me com a "
-"mínim un per cents i per cents revisió. Podeu utilitzar \"git bisectrius\" i "
-"\"git bisectrius\" per a això."
+"Heu de començar per «git bisect start». \n"
+"Després heu de donar-me com a mínim un per cents i per cents revisió. Podeu "
+"utilitzar «git bisect %s» i «git bisect %s» per a això."
 
 #: builtin/bisect--helper.c:310
 #, c-format
@@ -10462,7 +10460,7 @@
 "invalid argument %s for 'git bisect terms'.\n"
 "Supported options are: --term-good|--term-old and --term-bad|--term-new."
 msgstr ""
-"paràmetre no vàlid %s per a 'git bisect terms'.\n"
+"argument no vàlid %s per a «git bisect terms».\n"
 "Les opcions admeses són: --term-good|--term-old i --term-bad|--term-new."
 
 #: builtin/bisect--helper.c:478
@@ -10483,7 +10481,7 @@
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
-"l'agafament de «%s» ha fallat. Proveu «git  bisect start <branca-vàlida>»."
+"l'agafament de «%s» ha fallat. Proveu «git bisect start <branca-vàlida>»."
 
 #: builtin/bisect--helper.c:550
 msgid "won't bisect on cg-seek'ed tree"
@@ -10501,7 +10499,7 @@
 
 #: builtin/bisect--helper.c:633
 msgid "perform 'git bisect next'"
-msgstr "realitza 'git bisect next'"
+msgstr "realitza «git bisect next»"
 
 #: builtin/bisect--helper.c:635
 msgid "write the terms to .git/BISECT_TERMS"
@@ -10556,11 +10554,11 @@
 
 #: builtin/bisect--helper.c:673
 msgid "--write-terms requires two arguments"
-msgstr "--write-terms requereix dos paràmetres"
+msgstr "--write-terms requereix dos arguments"
 
 #: builtin/bisect--helper.c:677
 msgid "--bisect-clean-state requires no arguments"
-msgstr "--bisect-clean-state no accepta paràmetres"
+msgstr "--bisect-clean-state no requereix cap argument"
 
 #: builtin/bisect--helper.c:684
 #, fuzzy
@@ -10834,7 +10832,7 @@
 "If you are sure you want to delete it, run 'git branch -D %s'."
 msgstr ""
 "La branca «%s» no està totalment fusionada.\n"
-"Si esteu segur que la voleu suprimir, executeu 'git branch -D %s'."
+"Si esteu segur que la voleu suprimir, executeu «git branch -D %s»."
 
 #: builtin/branch.c:189
 msgid "Update of config-file failed"
@@ -11135,7 +11133,7 @@
 
 #: builtin/branch.c:790
 msgid "too many arguments for a rename operation"
-msgstr "hi ha massa arguments per a una operació remota"
+msgstr "hi ha massa arguments per a una operació de canvi de nom"
 
 #: builtin/branch.c:795
 msgid "too many arguments to set new upstream"
@@ -11186,8 +11184,8 @@
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
 msgstr ""
-"L'opció --set-upstream ja no està suportada. Useu en comptes --track o --set-"
-"upstream-to."
+"L'opció --set-upstream ja no s'admet. En lloc seu, useu «--track» o «--set-"
+"upstream-to»."
 
 #: builtin/bundle.c:15 builtin/bundle.c:23
 #, fuzzy
@@ -11944,7 +11942,7 @@
 #: builtin/checkout.c:1697
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
-msgstr "git checkout: --detach no accepta un paràmetre de camí «%s»"
+msgstr "git checkout: --detach no accepta un argument de camí «%s»"
 
 #: builtin/checkout.c:1706
 #, fuzzy
@@ -11990,7 +11988,7 @@
 #: builtin/checkout.c:1757
 #, fuzzy
 msgid "second guess 'git checkout <no-such-branch>' (default)"
-msgstr "segon conjectura 'git checkout <no-such-branch>' (per defecte)"
+msgstr "segon conjectura «git checkout <no-such-branch>» (per defecte)"
 
 #: builtin/checkout.c:1758
 #, fuzzy
@@ -12010,7 +12008,7 @@
 #: builtin/checkout.c:1807
 #, fuzzy
 msgid "second guess 'git switch <no-such-branch>'"
-msgstr "segon conjectura 'git switch <no-such-branch>'"
+msgstr "segon conjectura «git switch <no-such-branch>»"
 
 #: builtin/checkout.c:1809
 #, fuzzy
@@ -12149,9 +12147,9 @@
 "?                   - help for prompt selection"
 msgstr ""
 "clean               - comença a netejar\n"
-"filter by pattern   - exclou ítems de supressió\n"
+"filter by pattern   - exclou ítems de la supressió\n"
 "select by numbers   - selecciona ítems a suprimir per números\n"
-"ask each            - confirma cada supressió (com \"rm -i\")\n"
+"ask each            - confirma cada supressió (com «rm -i»)\n"
 "quit                - deixa de netejar\n"
 "help                - aquesta pantalla\n"
 "?                   - ajuda de selecció de l'avís"
@@ -12478,7 +12476,7 @@
 
 #: builtin/clone.c:971 builtin/receive-pack.c:1972
 msgid "Too many arguments."
-msgstr "Hi ha massa paràmetres."
+msgstr "Hi ha massa arguments."
 
 #: builtin/clone.c:975
 msgid "You must specify a repository to clone."
@@ -12607,7 +12605,7 @@
 
 #: builtin/column.c:51
 msgid "--command must be the first argument"
-msgstr "--command ha de ser el primer paràmetre"
+msgstr "--command ha de ser el primer argument"
 
 #: builtin/commit-graph.c:11 builtin/commit-graph.c:19
 #, fuzzy
@@ -12657,9 +12655,9 @@
 msgstr "No s'ha pogut obrir el graf de comissions «%s»"
 
 #: builtin/commit-graph.c:136
-#, fuzzy, c-format
+#, c-format
 msgid "unrecognized --split argument, %s"
-msgstr "paràmetre --type no reconegut, %s"
+msgstr "argument --split no reconegut, %s"
 
 #: builtin/commit-graph.c:155
 #, fuzzy
@@ -12807,7 +12805,7 @@
 msgstr ""
 "Heu demanat esmenar la comissió més recent, però fer això la\n"
 "deixaria buida. Podeu repetir la vostra ordre amb --allow-empty, o\n"
-"podeu eliminar la comissió per complet amb \"git reset HEAD^\".\n"
+"podeu eliminar la comissió per complet amb «git reset HEAD^».\n"
 
 #: builtin/commit.c:56
 msgid ""
@@ -12817,22 +12815,20 @@
 "    git commit --allow-empty\n"
 "\n"
 msgstr ""
-"El «cherry pick» previ ja està buit, possiblement a causa de resolució de "
-"conflicte.\n"
+"El «cherry pick» previ està ara buit, possiblement a causa de resolució de "
+"conflictes.\n"
 "Si el voleu cometre de totes maneres, useu:\n"
 "\n"
 "    git commit --allow-empty\n"
 "\n"
 
 #: builtin/commit.c:63
-#, fuzzy
 msgid "Otherwise, please use 'git rebase --skip'\n"
-msgstr "Altrament si us plau useu 'git cherry-pick --skip'"
+msgstr "Altrament si us plau useu «git rebase --skip»\n"
 
 #: builtin/commit.c:66
-#, fuzzy
 msgid "Otherwise, please use 'git cherry-pick --skip'\n"
-msgstr "Altrament si us plau useu 'git cherry-pick --skip'"
+msgstr "Altrament si us plau useu «git cherry-pick --skip»\n"
 
 #: builtin/commit.c:69
 #, fuzzy
@@ -12929,7 +12925,7 @@
 #: builtin/commit.c:717 builtin/commit.c:750 builtin/commit.c:1099
 #, c-format
 msgid "could not lookup commit %s"
-msgstr "no s'ha pogut trobar la comissió %s"
+msgstr "no s'ha pogut cercar la comissió %s"
 
 #: builtin/commit.c:729 builtin/shortlog.c:319
 #, c-format
@@ -13047,7 +13043,7 @@
 #: builtin/commit.c:1071
 #, c-format
 msgid "Invalid ignored mode '%s'"
-msgstr "mode ignorat no vàlid «%s»"
+msgstr "Mode ignorat no vàlid «%s»"
 
 #: builtin/commit.c:1089 builtin/commit.c:1333
 #, c-format
@@ -13354,7 +13350,7 @@
 #: builtin/config.c:104 builtin/env--helper.c:23
 #, c-format
 msgid "unrecognized --type argument, %s"
-msgstr "paràmetre --type no reconegut, %s"
+msgstr "argument --type no reconegut, %s"
 
 #: builtin/config.c:116
 msgid "only one type at a time"
@@ -13634,7 +13630,7 @@
 
 #: builtin/config.c:760
 msgid "error processing config file(s)"
-msgstr "s'ha produït un error processant els fitxers de configuració"
+msgstr "s'ha produït un error en processar els fitxers de configuració"
 
 #: builtin/config.c:770
 msgid "editing stdin is not supported"
@@ -13815,11 +13811,11 @@
 
 #: builtin/describe.c:572
 msgid "append <mark> on dirty working tree (default: \"-dirty\")"
-msgstr "annexa <marca> en l'arbre de treball brut (per defecte: \"-dirty\")"
+msgstr "annexa <marca> en l'arbre de treball brut (per defecte: «-dirty»)"
 
 #: builtin/describe.c:575
 msgid "append <mark> on broken working tree (default: \"-broken\")"
-msgstr "annexa <marca> en l'arbre de treball brut (per defecte: \"-broken\")"
+msgstr "annexa <marca> en l'arbre de treball brut (per defecte: «-broken»)"
 
 #: builtin/describe.c:593
 msgid "--long is incompatible with --abbrev=0"
@@ -13888,15 +13884,15 @@
 #: builtin/difftool.c:312
 #, c-format
 msgid "could not read object %s for symlink %s"
-msgstr "No es pot llegir l'objecte %s per l'enllaç simbòlic %s"
+msgstr "no es pot llegir l'objecte %s per l'enllaç simbòlic %s"
 
 #: builtin/difftool.c:413
 msgid ""
 "combined diff formats('-c' and '--cc') are not supported in\n"
 "directory diff mode('-d' and '--dir-diff')."
 msgstr ""
-"els formats de diff combinats ('-c' and '--cc') no són admesos \n"
-"en el mode diff per directoris ('-d' and '--dir-diff')."
+"els formats de diff combinats («-c» i «--cc») no s'admeten\n"
+"en el mode diff per directoris («-d» i «--dir-diff»)."
 
 #: builtin/difftool.c:634
 #, c-format
@@ -13918,7 +13914,7 @@
 
 #: builtin/difftool.c:697
 msgid "use `diff.guitool` instead of `diff.tool`"
-msgstr "utilitza `diff.guitool` en comptes de `diff.tool`"
+msgstr "usa «diff.guitool» en lloc de «diff.tool»"
 
 #: builtin/difftool.c:699
 msgid "perform a full-directory diff"
@@ -13943,14 +13939,14 @@
 #: builtin/difftool.c:710
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr ""
-"imprimeix una llista de totes les eines diff que podeu usar amb `--tool`"
+"imprimeix una llista de totes les eines diff que podeu usar amb «--tool»"
 
 #: builtin/difftool.c:713
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
 msgstr ""
-"fes que 'git-difftool' surti quan l'eina de diff invocada torna un codi de "
+"fes que «git-difftool» surti quan l'eina de diff invocada torna un codi de "
 "sortida diferent de zero"
 
 #: builtin/difftool.c:716
@@ -13975,11 +13971,11 @@
 
 #: builtin/difftool.c:750
 msgid "no <tool> given for --tool=<tool>"
-msgstr "no s'ha proporcionat <tool> per --tool=<tool>"
+msgstr "no s'ha proporcionat l'<eina> per a --tool=<eina>"
 
 #: builtin/difftool.c:757
 msgid "no <cmd> given for --extcmd=<cmd>"
-msgstr "no s'ha proporcionat <cmd> per --extcmd=<cmd>"
+msgstr "no s'ha proporcionat l'<ordre> per a --extcmd=<ordre>"
 
 #: builtin/env--helper.c:6
 msgid "git env--helper --type=[bool|ulong] <options> <env-var>"
@@ -14352,7 +14348,7 @@
 " 'git remote prune %s' to remove any old, conflicting branches"
 msgstr ""
 "algunes referències locals no s'han pogut actualitzar;\n"
-" intenteu executar 'git remote prune %s' per a eliminar\n"
+" intenteu executar «git remote prune %s» per a eliminar\n"
 " qualsevol branca antiga o conflictiva"
 
 #: builtin/fetch.c:1128
@@ -14462,7 +14458,7 @@
 
 #: builtin/fetch.c:1798
 msgid "fetch --all does not take a repository argument"
-msgstr "fetch --all no accepta un paràmetre de dipòsit"
+msgstr "fetch --all no accepta un argument de dipòsit"
 
 #: builtin/fetch.c:1800
 msgid "fetch --all does not make sense with refspecs"
@@ -14667,7 +14663,7 @@
 #: builtin/fsck.c:501
 #, c-format
 msgid "%s: invalid reflog entry %s"
-msgstr " %s: entrada de referència no vàlida %s"
+msgstr "%s: entrada de referència no vàlida %s"
 
 #: builtin/fsck.c:515
 #, fuzzy, c-format
@@ -14915,7 +14911,7 @@
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
-"Hi ha massa objectes solts inabastables; executeu 'git prune' per a eliminar-"
+"Hi ha massa objectes solts inabastables; executeu «git prune» per a eliminar-"
 "los."
 
 #: builtin/grep.c:30
@@ -14940,7 +14936,7 @@
 #: builtin/pack-objects.c:2855
 #, c-format
 msgid "no threads support, ignoring %s"
-msgstr "no hi ha suport de fils, s'està ignorant %s"
+msgstr "no s'admeten fils, s'ignorarà %s"
 
 #: builtin/grep.c:475 builtin/grep.c:600 builtin/grep.c:640
 #, c-format
@@ -14971,7 +14967,7 @@
 
 #: builtin/grep.c:829
 msgid "ignore files specified via '.gitignore'"
-msgstr "ignora els fitxers especificats mitjançant '.gitignore'"
+msgstr "ignora els fitxers especificats mitjançant «.gitignore»"
 
 #: builtin/grep.c:831
 msgid "recursively search in each submodule"
@@ -15003,7 +14999,7 @@
 
 #: builtin/grep.c:847
 msgid "search in subdirectories (default)"
-msgstr "cerca als subdirectories (per defecte)"
+msgstr "cerca als subdirectoris (per defecte)"
 
 #: builtin/grep.c:849
 msgid "descend at most <depth> levels"
@@ -15163,9 +15159,8 @@
 msgstr "no s'ha pogut resoldre la revisió: %s"
 
 #: builtin/grep.c:1077
-#, fuzzy
 msgid "--untracked not supported with --recurse-submodules"
-msgstr "--untracked no està suportat amb --recurse-submodules"
+msgstr "--untracked no s'admet amb --recurse-submodules"
 
 #: builtin/grep.c:1081
 msgid "invalid option combination, ignoring --threads"
@@ -15173,7 +15168,7 @@
 
 #: builtin/grep.c:1084 builtin/pack-objects.c:3548
 msgid "no threads support, ignoring --threads"
-msgstr "no hi ha suport de fils, s'està ignorant --threads"
+msgstr "no s'admeten fils, s'ignorarà --threads"
 
 #: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2852
 #, c-format
@@ -15305,7 +15300,7 @@
 "Please consider using 'man.<tool>.cmd' instead."
 msgstr ""
 "«%s»: camí a un visualitzador de manuals no compatible.\n"
-"Considereu usar 'man.<eina>.cmd' en lloc d'això."
+"Considereu usar «man.<eina>.cmd» en lloc d'això."
 
 #: builtin/help.c:319
 #, c-format
@@ -15314,7 +15309,7 @@
 "Please consider using 'man.<tool>.path' instead."
 msgstr ""
 "«%s»: ordre per a un visualitzador de manuals compatible.\n"
-"Considereu usar 'man.<eina>.path' en lloc d'això."
+"Considereu usar «man.<eina>.path» en lloc d'això."
 
 #: builtin/help.c:436
 #, c-format
@@ -15560,7 +15555,7 @@
 #: builtin/index-pack.c:1405
 #, c-format
 msgid "packfile name '%s' does not end with '.pack'"
-msgstr "el nom del fitxer de paquet «%s» no acaba amb '.pack'"
+msgstr "el nom del fitxer de paquet «%s» no acaba amb «.pack»"
 
 #: builtin/index-pack.c:1430
 #, c-format
@@ -16023,7 +16018,7 @@
 
 #: builtin/log.c:1663
 msgid "use <sfx> instead of '.patch'"
-msgstr "usa <sufix> en lloc de '.patch'"
+msgstr "usa <sufix> en lloc de «.patch»"
 
 #: builtin/log.c:1665
 msgid "start numbering patches at <n> instead of 1"
@@ -16281,11 +16276,11 @@
 
 #: builtin/ls-files.c:529
 msgid "use lowercase letters for 'assume unchanged' files"
-msgstr "usa lletres minúscules per als fitxers 'assume unchanged'"
+msgstr "usa lletres minúscules per als fitxers «assume unchanged»"
 
 #: builtin/ls-files.c:531
 msgid "use lowercase letters for 'fsmonitor clean' files"
-msgstr "usa lletres minúscules per als fitxers 'fsmonitor clean'"
+msgstr "usa lletres minúscules per als fitxers «fsmonitor clean»"
 
 #: builtin/ls-files.c:533
 msgid "show cached files in the output (default)"
@@ -16422,7 +16417,7 @@
 
 #: builtin/ls-remote.c:75
 msgid "show underlying ref in addition to the object pointed by it"
-msgstr "mostra la referència subjacent a més de l'objecte que senyali"
+msgstr "mostra la referència subjacent a més de l'objecte que assenyali"
 
 #: builtin/ls-tree.c:30
 msgid "git ls-tree [<options>] <tree-ish> [<path>...]"
@@ -16763,7 +16758,7 @@
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
-"No s'està cometent la fusió; useu 'git commit' per a completar la fusió.\n"
+"No s'està cometent la fusió; useu «git commit» per a completar la fusió.\n"
 
 #: builtin/merge.c:812
 #, fuzzy
@@ -16839,20 +16834,19 @@
 
 #: builtin/merge.c:1295
 msgid "--abort expects no arguments"
-msgstr "--abort no accepta paràmetres"
+msgstr "--abort no espera cap argument"
 
 #: builtin/merge.c:1299
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "No hi ha fusió a avortar (manca MERGE_HEAD)."
 
 #: builtin/merge.c:1317
-#, fuzzy
 msgid "--quit expects no arguments"
 msgstr "--quit no espera cap argument"
 
 #: builtin/merge.c:1330
 msgid "--continue expects no arguments"
-msgstr "--continue no accepta paràmetres"
+msgstr "--continue no espera cap argument"
 
 #: builtin/merge.c:1334
 msgid "There is no merge in progress (MERGE_HEAD missing)."
@@ -17015,12 +17009,11 @@
 
 #: builtin/multi-pack-index.c:50 builtin/prune-packed.c:25
 msgid "too many arguments"
-msgstr "hi ha massa paràmetres"
+msgstr "hi ha massa arguments"
 
 #: builtin/multi-pack-index.c:60
-#, fuzzy
 msgid "--batch-size option is only for 'repack' subcommand"
-msgstr "--batch-size l'opció només és per la subordre 'repack'"
+msgstr "--batch-size l'opció només és per a la subordre «repack»"
 
 #: builtin/multi-pack-index.c:69
 #, fuzzy, c-format
@@ -17294,7 +17287,7 @@
 #: builtin/notes.c:162
 #, c-format
 msgid "failed to finish 'show' for object '%s'"
-msgstr "S'ha produït un error en finalitzar 'show' per a l'objecte «%s»"
+msgstr "S'ha produït un error en finalitzar «show» per a l'objecte «%s»"
 
 #: builtin/notes.c:197
 msgid "please supply the note contents using either -m or -F option"
@@ -17437,7 +17430,7 @@
 "The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n"
 "Please use 'git notes add -f -m/-F/-c/-C' instead.\n"
 msgstr ""
-"Es desaconsellen les opcions -m/-F/-c/-C en favor de la subordre 'edit'.\n"
+"Es desaconsellen les opcions -m/-F/-c/-C en favor de la subordre «edit».\n"
 "Useu «git notes add -f -m/-F/-c/-C» en lloc d'això.\n"
 
 #: builtin/notes.c:698
@@ -17451,7 +17444,7 @@
 #: builtin/notes.c:702
 msgid "failed to remove 'git notes merge' worktree"
 msgstr ""
-"s'ha produït un error en eliminar l'arbre de treball de 'git notes merge'"
+"s'ha produït un error en eliminar l'arbre de treball de «git notes merge»"
 
 #: builtin/notes.c:722
 msgid "failed to read ref NOTES_MERGE_PARTIAL"
@@ -17543,8 +17536,8 @@
 "abort'.\n"
 msgstr ""
 "La fusió de notes automàtica ha fallat. Arregleu els conflictes en %s i "
-"cometeu el resultat amb 'git notes merge --commit', o avorteu la fusió amb "
-"'git notes merge --abort'.\n"
+"cometeu el resultat amb «git notes merge --commit», o avorteu la fusió amb "
+"«git notes merge --abort».\n"
 
 #: builtin/notes.c:897 builtin/tag.c:546
 #, c-format
@@ -17818,7 +17811,7 @@
 
 #: builtin/pack-objects.c:3410
 msgid "read revision arguments from standard input"
-msgstr "llegeix els paràmetres de revisió des de l'entrada estàndard"
+msgstr "llegeix els arguments de revisió des de l'entrada estàndard"
 
 #: builtin/pack-objects.c:3412
 msgid "limit the objects to those that are not yet packed"
@@ -18117,7 +18110,7 @@
 
 #: builtin/pull.c:475 builtin/pull.c:490
 msgid "See git-pull(1) for details."
-msgstr "Vegeu git-pull(1) per detalls."
+msgstr "Vegeu git-pull(1) per a més informació."
 
 #: builtin/pull.c:477 builtin/pull.c:483 builtin/pull.c:492
 #: builtin/rebase.c:1240 git-parse-remote.sh:64
@@ -18232,8 +18225,8 @@
 "To choose either option permanently, see push.default in 'git help config'."
 msgstr ""
 "\n"
-"Per a triar qualsevol opció permanentment, vegeu push.default a 'git help "
-"config'."
+"Per a triar qualsevol opció permanentment, vegeu push.default a «git help "
+"config»."
 
 #: builtin/push.c:171
 #, c-format
@@ -18321,8 +18314,9 @@
 msgstr ""
 "S'han rebutjat les actualitzacions perquè el punt de la vostra branca\n"
 "actual està darrere de la seva branca remota corresponent. Integreu\n"
-"els canvis remots (per exemple, 'git pull ...') abans de pujar de nou.\n"
-"Vegeu la 'Nota sobre avanços ràpids' a 'git push --help' per detalls."
+"els canvis remots (per exemple, «git pull ...») abans de pujar de nou.\n"
+"Vegeu la «Nota sobre avanços ràpids» a «git push --help» per a més "
+"informació."
 
 #: builtin/push.c:283
 msgid ""
@@ -18333,9 +18327,10 @@
 msgstr ""
 "S'han rebutjat les actualitzacions perquè un punt de branca pujada\n"
 "està darrere de la seva branca remota corresponent. Agafeu aquesta\n"
-"branca i integreu els canvis remots (per exemple, 'git pull ...')\n"
+"branca i integreu els canvis remots (per exemple, «git pull ...»)\n"
 "abans de pujar de nou.\n"
-"Vegeu la 'Nota sobre avanços ràpids' a 'git push --help' per detalls."
+"Vegeu la «Nota sobre avanços ràpids» a «git push --help» per a més "
+"informació."
 
 #: builtin/push.c:289
 msgid ""
@@ -18348,9 +18343,10 @@
 "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 ha pujat a la mateixa referència. Pot ser que primer vulgueu\n"
-"integrar els canvis remots (per exemple, 'git pull ...') abans de\n"
+"integrar els canvis remots (per exemple, «git pull ...») abans de\n"
 "pujar de nou.\n"
-"Vegeu la 'Nota sobre avanços ràpids' a 'git push --help' per detalls."
+"Vegeu la «Nota sobre avanços ràpids» a «git push --help» per a més "
+"informació."
 
 #: builtin/push.c:296
 msgid "Updates were rejected because the tag already exists in the remote."
@@ -18366,7 +18362,7 @@
 "No podeu actualitzar una referència remota que assenyala un\n"
 "objecte no de comissió, ni actualitzar una referència remota per\n"
 "fer que assenyali un objecte no de comissió, sense usar l'opció\n"
-"'--force'.\n"
+"«--force».\n"
 
 #: builtin/push.c:361
 #, c-format
@@ -18916,8 +18912,8 @@
 "\n"
 msgstr ""
 "%s\n"
-"Especifiqueu sobre què branca voleu fer «rebase».\n"
-"Vegeu git-rebase(1) per detalls.\n"
+"Especifiqueu sobre quina branca voleu fer «rebase».\n"
+"Vegeu git-rebase(1) per a més informació.\n"
 "\n"
 "    git rebase '<branca>'\n"
 "\n"
@@ -18933,7 +18929,7 @@
 "Si voleu establir informació de seguiment per a aquesta branca, podeu fer-ho "
 "amb:\n"
 "\n"
-"    git branch --set-upstream-to=%s/<branch> %s\n"
+"    git branch --set-upstream-to=%s/<branca> %s\n"
 "\n"
 
 #: builtin/rebase.c:1272
@@ -19208,7 +19204,7 @@
 
 #: builtin/rebase.c:1824
 msgid "Could not create new root commit"
-msgstr "no s'ha pogut crear una comissió arrel nova"
+msgstr "No s'ha pogut crear una comissió arrel nova"
 
 #: builtin/rebase.c:1850
 #, fuzzy, c-format
@@ -19275,7 +19271,7 @@
 #: builtin/rebase.c:2001
 #, c-format
 msgid "Changes to %s:\n"
-msgstr "Canvis a  %s:\n"
+msgstr "Canvis a %s:\n"
 
 #: builtin/rebase.c:2004
 #, c-format
@@ -19319,18 +19315,18 @@
 "'receive.denyCurrentBranch' configuration variable to 'refuse'."
 msgstr ""
 "Per defecte, es denega actualitzar la branca actual en un dipòsit no\n"
-"nu, perquè faria l'índex i l'arbre de treball inconsistents amb el\n"
-"que hàgiu pujat, i requeriria 'git reset --hard' per a fer que\n"
-"l'arbre de treball coincideixi amb HEAD.\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"
-"per a permetre pujar a la seva branca actual; no obstant, no es\n"
-"recomana això a menys que hàgiu decidit actualitzar el seu arbre en\n"
-"alguna altra manera per a coincidir amb el que hàgiu pujat.\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"
 "\n"
 "Per a silenciar aquest missatge i mantenir el comportament\n"
-"predeterminat, establiu la variable de configuració\n"
+"per defecte, establiu la variable de configuració\n"
 "«receive.denyCurrentBranch» a «refuse»."
 
 #: builtin/receive-pack.c:863
@@ -19345,7 +19341,7 @@
 "To squelch this message, you can set it to 'refuse'."
 msgstr ""
 "Per defecte, es denega suprimir la branca actual, perquè el\n"
-"'git clone' següent no resultarà en cap fitxer agafat, causant\n"
+"«git clone» següent no resultarà en cap fitxer agafat, causant\n"
 "confusió.\n"
 "\n"
 "Podeu establir la variable de configuració\n"
@@ -19369,20 +19365,21 @@
 "rewrite] [--updateref] [--stale-fix] [--dry-run | -n] [--verbose] [--all] "
 "<refs>..."
 msgstr ""
-"git reflog expire [--expire=<time>] [--expire-unreachable=<time>] [--"
+"git reflog expire [--expire=<hora>] [--expire-unreachable=<hora>] [--"
 "rewrite] [--updateref] [--stale-fix] [--dry-run | -n] [--verbose] [--all] "
+"<referències>..."
 
 #: builtin/reflog.c:22
 msgid ""
 "git reflog delete [--rewrite] [--updateref] [--dry-run | -n] [--verbose] "
 "<refs>..."
 msgstr ""
-"git reflog remove [--rewrite] [--updateref] [---dry-run | -n] [--verbose] "
-"<refs>"
+"git reflog delete [--rewrite] [--updateref] [--dry-run | -n] [--verbose] "
+"<referències>..."
 
 #: builtin/reflog.c:25
 msgid "git reflog exists <ref>"
-msgstr "git reflog exists <ref>"
+msgstr "git reflog exists <referència>"
 
 #: builtin/reflog.c:568 builtin/reflog.c:573
 #, c-format
@@ -19420,9 +19417,8 @@
 msgstr "format de referència no vàlid: %s"
 
 #: builtin/reflog.c:765
-#, fuzzy
 msgid "git reflog [ show | expire | delete | exists ]"
-msgstr "git reflog [ mostra | expira | suprimeix | existeix ]"
+msgstr "git reflog [ show | expire | delete | exists ]"
 
 #: builtin/remote.c:17
 msgid "git remote [-v | --verbose]"
@@ -19523,7 +19519,7 @@
 #: builtin/remote.c:148
 #, c-format
 msgid "unknown mirror argument: %s"
-msgstr "paràmetre de reflexió desconegut: %s"
+msgstr "argument de «mirror» desconegut: %s"
 
 #: builtin/remote.c:164
 msgid "fetch the remote branches"
@@ -19665,7 +19661,7 @@
 
 #: builtin/remote.c:998
 msgid " stale (use 'git remote prune' to remove)"
-msgstr " estancat (useu 'git remote prune' per a eliminar)"
+msgstr " estancat (useu «git remote prune» per a eliminar)"
 
 #: builtin/remote.c:1000
 msgid " ???"
@@ -19823,11 +19819,11 @@
 
 #: builtin/remote.c:1318
 msgid "set refs/remotes/<name>/HEAD according to remote"
-msgstr "estableix refs/remotes/<name>/HEAD segons el remot"
+msgstr "estableix refs/remotes/<nom>/HEAD segons el remot"
 
 #: builtin/remote.c:1320
 msgid "delete refs/remotes/<name>/HEAD"
-msgstr "suprimeix refs/remotes/<name>/HEAD"
+msgstr "suprimeix refs/remotes/<nom>/HEAD"
 
 #: builtin/remote.c:1335
 msgid "Cannot determine remote HEAD"
@@ -19951,8 +19947,8 @@
 "Incremental repacks are incompatible with bitmap indexes.  Use\n"
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
 msgstr ""
-"Els reempaquetaments incrementals són incompatibles amb els índexs de "
-"bitmaps.  Useu\n"
+"Els reempaquetaments incrementals són incompatibles amb els índexs de mapes "
+"de bits.  Useu\n"
 "--no-write-bitmap-index o inhabiliteu el paràmetre de configuració pack."
 "writebitmaps."
 
@@ -20075,7 +20071,7 @@
 msgstr "Res nou per empaquetar."
 
 #: builtin/repack.c:488
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "WARNING: Some packs in use have been renamed by\n"
 "WARNING: prefixing old- to their name, in order to\n"
@@ -20085,11 +20081,13 @@
 "WARNING: original names also failed.\n"
 "WARNING: Please rename them in %s manually:\n"
 msgstr ""
-"AVÍS Alguns paquets en ús s'han reanomenat ALERTA prefixant «old-» al seu "
-"nom per tal d' AVÍS reemplaçar-los per la nova versió del fitxer ALERTA. "
-"Però l'operació ha fallat i l'intent ALERTA de tornar-los a canviar el nom "
-"també ha fallat en el seu ALERTA els noms originals. AVÍS Els reanomeneu "
-"manualment en percentatges"
+"AVÍS: Alguns paquets en ús han canviat de nom\n"
+"AVÍS: prefixant «old-» al seu nom per tal de\n"
+"AVÍS: reemplaçar-los per la nova versió del fitxer.\n"
+"AVÍS: Però l'operació ha fallat i l'intent de\n"
+"AVÍS: tornar-los a canviar als seus noms originals\n"
+"AVÍS: també ha fallat. Canvieu-los de nom en %s\n"
+"AVÍS: manualment:\n"
 
 #: builtin/repack.c:536
 #, c-format
@@ -20479,7 +20477,7 @@
 #: builtin/reset.c:371
 msgid "--mixed with paths is deprecated; use 'git reset -- <paths>' instead."
 msgstr ""
-"--mixed amb camins està en desús; useu 'git reset -- <camins>' en lloc "
+"--mixed amb camins està en desús; useu «git reset -- <camins>» en lloc "
 "d'això."
 
 #: builtin/reset.c:373
@@ -20540,15 +20538,15 @@
 
 #: builtin/rev-parse.c:409
 msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
-msgstr "git rev-parse --parseopt [<opcions>] -- [<paràmetres>...]"
+msgstr "git rev-parse --parseopt [<opcions>] -- [<arguments>...]"
 
 #: builtin/rev-parse.c:414
 msgid "keep the `--` passed as an arg"
-msgstr "retén el «--» passat com a paràmetre"
+msgstr "retén el «--» passat com a argument"
 
 #: builtin/rev-parse.c:416
 msgid "stop parsing after the first non-option argument"
-msgstr "deixa d'analitzar després del primer paràmetre no d'opció"
+msgstr "deixa d'analitzar després del primer argument que no sigui d'opció"
 
 #: builtin/rev-parse.c:419
 msgid "output in stuck long form"
@@ -20562,12 +20560,12 @@
 "\n"
 "Run \"git rev-parse --parseopt -h\" for more information on the first usage."
 msgstr ""
-"git rev-parse --parseopt [<opcions>] -- [<paràmetres>...]\n"
-"   or: git rev-parse --sq-quote [<paràmetre>...]\n"
-"   or: git rev-parse [<opcions>] [<paràmetre>...]\n"
+"git rev-parse --parseopt [<opcions>] -- [<arguments>...]\n"
+"   o bé: git rev-parse --sq-quote [<argument>...]\n"
+"   o bé: git rev-parse [<opcions>] [<argument>...]\n"
 "\n"
-"Executeu \"git rev-parse --parseopt -h\" per més informació sobre l'ús "
-"inicial."
+"Executeu «git rev-parse --parseopt -h» per a més informació sobre el primer "
+"ús."
 
 #: builtin/revert.c:24
 msgid "git revert [<options>] <commit-ish>..."
@@ -20736,7 +20734,7 @@
 #: builtin/rm.c:323
 #, c-format
 msgid "not removing '%s' recursively without -r"
-msgstr "no s'ha suprimit «%s» recursivament sense -r"
+msgstr "no s'eliminarà «%s» recursivament sense -r"
 
 #: builtin/rm.c:362
 #, c-format
@@ -20846,7 +20844,7 @@
 
 #: builtin/show-branch.c:649
 msgid "color '*!+-' corresponding to the branch"
-msgstr "colora '*!+-' corresponent a la branca"
+msgstr "colora «*!+-» corresponent a la branca"
 
 #: builtin/show-branch.c:651
 msgid "show <n> more commits after the common ancestor"
@@ -21212,7 +21210,7 @@
 
 #: builtin/stash.c:828
 msgid "\"git stash store\" requires one <commit> argument"
-msgstr "«git stash store» requereix un paràmetre <comissió>"
+msgstr "«git stash store» requereix un argument <comissió>"
 
 #: builtin/stash.c:1046
 msgid "No changes selected"
@@ -21495,7 +21493,7 @@
 "really want to remove it including all of its history)"
 msgstr ""
 "L'arbre de treball de submòdul «%s» conté un directori .git\n"
-"(useu 'rm -rf' si realment voleu eliminar-lo, incloent tota la seva història)"
+"(useu «rm -rf» si realment voleu eliminar-lo, incloent tota la seva història)"
 
 #: builtin/submodule--helper.c:1134
 #, c-format
@@ -21509,7 +21507,7 @@
 #: builtin/submodule--helper.c:1142
 #, c-format
 msgid "Cleared directory '%s'\n"
-msgstr "S'ha netejat el directori «%s»\n"
+msgstr "S'ha esborrat el directori «%s»\n"
 
 #: builtin/submodule--helper.c:1144
 #, c-format
@@ -21529,7 +21527,7 @@
 #: builtin/submodule--helper.c:1200
 msgid "Remove submodule working trees even if they contain local changes"
 msgstr ""
-"Suprimeix els arbres de treball dels submòduls fins i tot si contenen canvis "
+"Elimina els arbres de treball dels submòduls fins i tot si contenen canvis "
 "locals"
 
 #: builtin/submodule--helper.c:1201
@@ -21544,7 +21542,7 @@
 
 #: builtin/submodule--helper.c:1220
 msgid "Use '--all' if you really want to deinitialize all submodules"
-msgstr "Useu '--all' si realment voleu desinicialitzar tots els submòduls"
+msgstr "Useu «--all» si realment voleu desinicialitzar tots els submòduls"
 
 #: builtin/submodule--helper.c:1289
 #, fuzzy
@@ -21647,7 +21645,7 @@
 
 #: builtin/submodule--helper.c:1621
 msgid "Maybe you want to use 'update --init'?"
-msgstr "Potser voleu usar 'update --init'?"
+msgstr "Potser voleu usar «update --init»?"
 
 #: builtin/submodule--helper.c:1651
 #, c-format
@@ -22056,33 +22054,34 @@
 #: builtin/update-index.c:154
 msgid "directory stat info does not change after adding a new file"
 msgstr ""
-"la informació d'stat de directori no canvia després d'afegir un fitxer nou"
+"la informació de stat de directori no canvia després d'afegir un fitxer nou"
 
 #: builtin/update-index.c:167
 msgid "directory stat info does not change after adding a new directory"
 msgstr ""
-"la informació d'stat de directori no canvia després d'afegir un directori nou"
+"la informació de stat de directori no canvia després d'afegir un directori "
+"nou"
 
 #: builtin/update-index.c:180
 msgid "directory stat info changes after updating a file"
 msgstr ""
-"la informació d'stat de directori canvia després d'actualitzar un fitxer"
+"la informació de stat de directori canvia després d'actualitzar un fitxer"
 
 #: builtin/update-index.c:191
 msgid "directory stat info changes after adding a file inside subdirectory"
 msgstr ""
-"la informació d'stat de directori canvia després d'afegir un fitxer dins "
+"la informació de stat de directori canvia després d'afegir un fitxer dins "
 "d'un subdirectori"
 
 #: builtin/update-index.c:202
 msgid "directory stat info does not change after deleting a file"
 msgstr ""
-"la informació d'stat de directori no canvia després de suprimir un fitxer"
+"la informació de stat de directori no canvia després de suprimir un fitxer"
 
 #: builtin/update-index.c:215
 msgid "directory stat info does not change after deleting a directory"
 msgstr ""
-"la informació d'stat de directori no canvia després de suprimir un directori"
+"la informació de stat de directori no canvia després de suprimir un directori"
 
 #: builtin/update-index.c:222
 msgid " OK"
@@ -22135,19 +22134,19 @@
 
 #: builtin/update-index.c:1008
 msgid "mark files as \"not changing\""
-msgstr "marca els fitxers com a \"no canviant\""
+msgstr "marca els fitxers com a «no canviant»"
 
 #: builtin/update-index.c:1011
 msgid "clear assumed-unchanged bit"
-msgstr "neteja el bit assumed-unchanged"
+msgstr "esborra el bit assumed-unchanged"
 
 #: builtin/update-index.c:1014
 msgid "mark files as \"index-only\""
-msgstr "marca els fitxers com a \"només índex\""
+msgstr "marca els fitxers com a «només índex»"
 
 #: builtin/update-index.c:1017
 msgid "clear skip-worktree bit"
-msgstr "neteja el bit skip-worktree"
+msgstr "esborra el bit skip-worktree"
 
 #: builtin/update-index.c:1020
 #, fuzzy
@@ -22233,7 +22232,7 @@
 
 #: builtin/update-index.c:1070
 msgid "clear fsmonitor valid bit"
-msgstr "neteja el bit de validesa del fsmonitor"
+msgstr "esborra el bit de validesa del fsmonitor"
 
 #: builtin/update-index.c:1173
 msgid ""
@@ -22320,7 +22319,7 @@
 
 #: builtin/update-ref.c:490
 msgid "stdin has NUL-terminated arguments"
-msgstr "stdin té paràmetres acabats amb NUL"
+msgstr "stdin té arguments acabats amb NUL"
 
 #: builtin/update-ref.c:491
 msgid "read updates from stdin"
@@ -22389,7 +22388,7 @@
 
 #: builtin/worktree.c:17
 msgid "git worktree add [<options>] <path> [<commit-ish>]"
-msgstr "git worktree add [<opcions>] <camí> [<commit-ish>"
+msgstr "git worktree add [<opcions>] <camí> [<commit-ish>]"
 
 #: builtin/worktree.c:18
 msgid "git worktree list [<options>]"
@@ -22409,7 +22408,7 @@
 
 #: builtin/worktree.c:22
 msgid "git worktree remove [<options>] <worktree>"
-msgstr "git worktree lock [<opcions>] <arbre de treball>"
+msgstr "git worktree remove [<opcions>] <arbre de treball>"
 
 #: builtin/worktree.c:23
 msgid "git worktree unlock <path>"
@@ -22441,8 +22440,8 @@
 "Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
 "%<PRIuMAX>)"
 msgstr ""
-"S'estan suprimint els arbres de treball/%s: lectura curta (s'esperaven "
-"%<PRIuMAX> bytes, llegits %<PRIuMAX>)"
+"S'estan eliminant els arbres de treball/%s: lectura curta (s'esperaven "
+"%<PRIuMAX> bytes, se n'han llegit %<PRIuMAX>)"
 
 #: builtin/worktree.c:117
 #, c-format
@@ -22589,7 +22588,7 @@
 #: builtin/worktree.c:766
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
-"els arbres de treball que contenen submòduls no es poden moure o suprimir"
+"els arbres de treball que contenen submòduls no es poden moure ni eliminar"
 
 #: builtin/worktree.c:774
 msgid "force move even if worktree is dirty or locked"
@@ -22658,7 +22657,7 @@
 #: builtin/worktree.c:906
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
-"força la supressió encara que l'arbre de treball estigui brut o bloquejat"
+"força l'eliminació encara que l'arbre de treball estigui brut o bloquejat"
 
 #: builtin/worktree.c:929
 #, fuzzy, c-format
@@ -22834,7 +22833,7 @@
 
 #: t/helper/test-reach.c:162
 msgid "too many commits marked reachable"
-msgstr "masses comission marcades com abastable"
+msgstr "hi ha massa comissions marcades com abastables"
 
 #: t/helper/test-serve-v2.c:7
 msgid "test-tool serve-v2 [<options>]"
@@ -22911,12 +22910,12 @@
 msgstr "en expandir l'àlies '%s' '%s'"
 
 #: git.c:371
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "alias '%s' changes environment variables.\n"
 "You can use '!git' in the alias to do this"
 msgstr ""
-"àlies '%s' canvia variables d'entorn. Podeu utilitzar '!git' a l'àlies per "
+"àlies «%s» canvia variables d'entorn. Podeu utilitzar «!git» a l'àlies per a "
 "fer-ho"
 
 #: git.c:378
@@ -22981,7 +22980,7 @@
 
 #: http.c:429
 msgid "Public key pinning not supported with cURL < 7.44.0"
-msgstr "No s'admet l'enganx de clau pública amb cURL < 7.44.0"
+msgstr "No s'admet la fixació de clau pública amb cURL < 7.44.0"
 
 #: http.c:914
 #, fuzzy
@@ -23156,7 +23155,7 @@
 
 #: list-objects-filter-options.h:85
 msgid "args"
-msgstr "args"
+msgstr "arguments"
 
 #: list-objects-filter-options.h:86
 msgid "object filtering"
@@ -23210,7 +23209,7 @@
 #: rerere.h:44
 msgid "update the index with reused conflict resolution if possible"
 msgstr ""
-"actualitza l'índex amb la resolució de conflicte reusada si és possible"
+"actualitza l'índex amb la resolució de conflictes reusada si és possible"
 
 #: wt-status.h:80
 msgid "HEAD detached at "
@@ -23311,7 +23310,7 @@
 
 #: command-list.h:71
 msgid "Remove untracked files from the working tree"
-msgstr "Suprimeix els fitxers no seguits de l'arbre de treball"
+msgstr "Elimina els fitxers no seguits de l'arbre de treball"
 
 #: command-list.h:72
 msgid "Clone a repository into a new directory"
@@ -23561,7 +23560,7 @@
 #: command-list.h:127
 msgid "Run merge conflict resolution tools to resolve merge conflicts"
 msgstr ""
-"Executa eines de resolució de conflictes per a resoldre conflictes de fussió"
+"Executa eines de resolució de conflictes per a resoldre conflictes de fusió"
 
 #: command-list.h:128
 #, fuzzy
@@ -23620,16 +23619,15 @@
 
 #: command-list.h:140
 msgid "Compute unique ID for a patch"
-msgstr "Calcula un identificador única per a cada pedaç"
+msgstr "Calcula un identificador únic per a cada pedaç"
 
 #: command-list.h:141
 msgid "Prune all unreachable objects from the object database"
 msgstr "Poda tots els objectes no accessibles de la base de dades d'objectes"
 
 #: command-list.h:142
-#, fuzzy
 msgid "Remove extra objects that are already in pack files"
-msgstr "Elimina els objectes extres que ja estan en fitxers de paquet"
+msgstr "Elimina els objectes extres que ja estan en fitxers empaquetats"
 
 #: command-list.h:143
 msgid "Fetch from and integrate with another repository or a local branch"
@@ -23652,7 +23650,6 @@
 "Compara dos intervals de comissions (p. ex. dues versions d'una branca)"
 
 #: command-list.h:147
-#, fuzzy
 msgid "Reads tree information into the index"
 msgstr "Llegeix la informació de l'arbre a l'índex"
 
@@ -23666,19 +23663,16 @@
 msgstr "Rep el que s'envia al repositori"
 
 #: command-list.h:150
-#, fuzzy
 msgid "Manage reflog information"
 msgstr "Gestiona la informació del registre de referències"
 
 #: command-list.h:151
-#, fuzzy
 msgid "Manage set of tracked repositories"
-msgstr "Gestiona el conjunt de repositoris seguits"
+msgstr "Gestiona el conjunt de dipòsits seguits"
 
 #: command-list.h:152
-#, fuzzy
 msgid "Pack unpacked objects in a repository"
-msgstr "Empaqueta els objectes desempaquetats en un repositori"
+msgstr "Empaqueta els objectes desempaquetats en un dipòsit"
 
 #: command-list.h:153
 #, fuzzy
@@ -23686,14 +23680,12 @@
 msgstr "Crea una llista suprimeix les referències per substituir els objectes"
 
 #: command-list.h:154
-#, fuzzy
 msgid "Generates a summary of pending changes"
 msgstr "Genera un resum dels canvis pendents"
 
 #: command-list.h:155
-#, fuzzy
 msgid "Reuse recorded resolution of conflicted merges"
-msgstr "Reutilitza la resolució registrada dels fusionats en conflicte"
+msgstr "Reutilitza la resolució registrada dels conflictes de fusió"
 
 #: command-list.h:156
 msgid "Reset current HEAD to the specified state"
@@ -23713,7 +23705,7 @@
 
 #: command-list.h:160
 msgid "Pick out and massage parameters"
-msgstr "Escolliu i personalitzeu els paràmetres"
+msgstr "Trieu i personalitzeu els paràmetres"
 
 #: command-list.h:161
 msgid "Remove files from the working tree and from the index"
@@ -23728,9 +23720,8 @@
 msgstr "Puja objectes sobre el protocol Git a un altre dipòsit"
 
 #: command-list.h:164
-#, fuzzy
 msgid "Restricted login shell for Git-only SSH access"
-msgstr "Intèrpret d'ordres d'entrada restringit per a accés SSH només al Git"
+msgstr "Intèrpret d'ordres d'entrada restringit només per a accés SSH al Git"
 
 #: command-list.h:165
 msgid "Summarize 'git log' output"
@@ -23753,7 +23744,6 @@
 msgstr "Llista les referències en un dipòsit local"
 
 #: command-list.h:170
-#, fuzzy
 msgid "Git's i18n setup code for shell scripts"
 msgstr ""
 "Codi de configuració i18n del Git per als scripts de l'intèrpret d'ordres"
@@ -23773,9 +23763,8 @@
 msgstr "Desa els canvis en un directori de treball brut"
 
 #: command-list.h:174
-#, fuzzy
 msgid "Add file contents to the staging area"
-msgstr "Afegeix el contingut del fitxer a l'àrea de proves"
+msgstr "Afegeix el contingut del fitxer a l'àrea de «staging»"
 
 #: command-list.h:175
 msgid "Show the working tree status"
@@ -23783,7 +23772,7 @@
 
 #: command-list.h:176
 msgid "Remove unnecessary whitespace"
-msgstr "Suprimeix l'espai en blanc innecessari"
+msgstr "Elimina l'espai en blanc innecessari"
 
 #: command-list.h:177
 msgid "Initialize, update or inspect submodules"
@@ -23824,10 +23813,8 @@
 "Actualitza el nom de l'objecte emmagatzema en una referència de forma segura"
 
 #: command-list.h:186
-#, fuzzy
 msgid "Update auxiliary info file to help dumb servers"
-msgstr ""
-"Actualitza el fitxer d'informació auxiliar per ajudar als servidors ximples"
+msgstr "Actualitza el fitxer d'informació auxiliar per a ajudar als servidors ximples"
 
 #: command-list.h:187
 msgid "Send archive back to git-archive"
@@ -23886,7 +23873,6 @@
 msgstr "Git per a usuaris del CVS"
 
 #: command-list.h:201
-#, fuzzy
 msgid "Tweaking diff output"
 msgstr "Ajustament de la sortida de diferències"
 
@@ -23944,7 +23930,7 @@
 
 #: git-bisect.sh:54
 msgid "You need to start by \"git bisect start\""
-msgstr "Cal començar per \"git bisect start\""
+msgstr "Cal començar per «git bisect start»"
 
 #. TRANSLATORS: Make sure to include [Y] and [n] in your
 #. translation. The program will only accept English input
@@ -23971,7 +23957,7 @@
 #: git-bisect.sh:139
 #, sh-format
 msgid "'git bisect $TERM_BAD' can take only one argument."
-msgstr "'git bisect $TERM_BAD' pot acceptar només un paràmetre."
+msgstr "«git bisect $TERM_BAD» pot acceptar només un argument."
 
 #: git-bisect.sh:209
 msgid "No logfile given"
@@ -24002,7 +23988,7 @@
 "exit code $res from '$command' is < 0 or >= 128"
 msgstr ""
 "el pas de bisecció ha fallat:\n"
-"el codi de sortida $res de '$command' és < 0 o >= 128"
+"el codi de sortida $res de «$command» és < 0 o bé >= 128"
 
 #: git-bisect.sh:281
 msgid "bisect run cannot continue any more"
@@ -24015,7 +24001,7 @@
 "'bisect_state $state' exited with error code $res"
 msgstr ""
 "el pas de bisecció ha fallat:\n"
-"'bisect_state $state' ha sortit amb el codi d'error $res"
+"«bisect_state $state» ha sortit amb el codi d'error $res"
 
 #: git-bisect.sh:294
 msgid "bisect run success"
@@ -24088,25 +24074,25 @@
 msgstr "«$sm_path» ja existeix en l'índex i no és submòdul"
 
 #: git-submodule.sh:244
-#, fuzzy, sh-format
+#, sh-format
 msgid "'$sm_path' does not have a commit checked out"
-msgstr "«sm_path» no té una comissió marcada"
+msgstr "«$sm_path» no té una comissió agafada"
 
 #: git-submodule.sh:275
 #, 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 dipòsit existent a «$sm_path» a l'índex"
 
 #: git-submodule.sh:277
 #, 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 dipòsit de git vàlid"
 
 #: git-submodule.sh:285
 #, sh-format
 msgid "A git directory for '$sm_name' is found locally with remote(s):"
 msgstr ""
-"Es troba un directori de git per a '$sm_name' localment amb els remots:"
+"S'ha trobat un directori de git per a «$sm_name» localment amb els remots:"
 
 #: git-submodule.sh:287
 #, sh-format
@@ -24122,8 +24108,8 @@
 "  $realrepo\n"
 "useu l'opció «--force». Si el directori de git local no és el dipòsit "
 "correcte\n"
-"o no esteu segur de què vol dir això, trieu un altre nom amb l'opció '--"
-"name'."
+"o no esteu segur de què vol dir això, trieu un altre nom amb l'opció «--"
+"name»."
 
 #: git-submodule.sh:293
 #, sh-format
@@ -24164,7 +24150,7 @@
 "'$sm_path'"
 msgstr ""
 "No s'ha pogut trobar la revisió actual de ${remote_name}/${branch} en el "
-"camí de submòdul '$sm_path'"
+"camí de submòdul «$sm_path»"
 
 #: git-submodule.sh:625
 #, sh-format
@@ -24198,7 +24184,7 @@
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr ""
-"No s'ha pogut fer «rebase» «$sha1»' en el camí de submòdul «$displaypath»"
+"No s'ha pogut fer «rebase» «$sha1» en el camí de submòdul «$displaypath»"
 
 #: git-submodule.sh:644
 #, sh-format
@@ -24261,7 +24247,7 @@
 #: git-parse-remote.sh:89
 #, sh-format
 msgid "See git-${cmd}(1) for details."
-msgstr "Vegeu git-${cmd}(1) per detalls."
+msgstr "Vegeu git-${cmd}(1) per a més informació."
 
 #: git-rebase--preserve-merges.sh:109
 msgid "Applied autostash."
@@ -24280,7 +24266,7 @@
 msgstr ""
 "L'aplicació del «stash» automàtic ha resultat en conflictes.\n"
 "Els vostres canvis estan segurs en el «stash».\n"
-"Podeu executar \"git stash pop\" o \"git stash drop\" en qualsevol moment.\n"
+"Podeu executar «git stash pop» o «git stash drop» en qualsevol moment.\n"
 
 #: git-rebase--preserve-merges.sh:191
 #, sh-format
@@ -24288,7 +24274,6 @@
 msgstr "S'està fent «rebase» ($new_count/$total)"
 
 #: git-rebase--preserve-merges.sh:207
-#, fuzzy
 msgid ""
 "\n"
 "Commands:\n"
@@ -24308,8 +24293,25 @@
 "\n"
 "These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
-"Les ordres p select <commit> = fa servir «commit» o «commit» o "
-"«commit» (commit) o «commit» (commit)"
+"\n"
+"Ordres:\n"
+" p, pick <comissió> = usa la comissió\n"
+" r, reword <comissió> = usa la comissió, però edita el missatge de comissió\n"
+" e, edit <comissió> = usa la comissió, però atura't per a esmenar\n"
+" s, squash <comissió> = usa la comissió, però fusiona-la a la comissió prèvia\n"
+" f, fixup <comissió> = com a «squash», però descarta el missatge de registre d'aquesta "
+"comissió\n"
+"x, exec <comissió> = executa l'ordre (la resta de la línia) usant l'intèrpret "
+"d'ordres\n"
+"d, drop <comissió> = elimina la comissió\n"
+"l, label <etiqueta> = etiqueta la HEAD actual amb un nom\n"
+"t, reset <etiqueta> = reinicia HEAD a una etiqueta    \n"
+"m, merge [-C <comissió> | -c <comissió>] <etiqueta> [# <oneline>]\n"
+".       crea una comissió de fusió usant el missatge de la comissió\n"
+".       de fusió original (o línia única, si no hi ha cap comissió de fusió original\n"
+".       especificada). Useu -c <comissió> per a reescriure el missatge de publicació.\n"
+"\n"
+"Es pot canviar l'ordre d'aquestes línies; s'executen de dalt a baix.\n"
 
 #: git-rebase--preserve-merges.sh:270
 #, sh-format
@@ -24333,7 +24335,7 @@
 #: git-rebase--preserve-merges.sh:295
 #, sh-format
 msgid "$sha1: not a commit that can be picked"
-msgstr "$sha1: no és una comissió que es pugui escollir"
+msgstr "$sha1: no és una comissió que es pugui triar"
 
 #: git-rebase--preserve-merges.sh:334
 #, sh-format
@@ -24372,7 +24374,7 @@
 #: git-rebase--preserve-merges.sh:458
 #, sh-format
 msgid "Could not pick $sha1"
-msgstr "No s'ha pogut escollir $sha1"
+msgstr "No s'ha pogut triar $sha1"
 
 #: git-rebase--preserve-merges.sh:467
 #, sh-format
@@ -24388,7 +24390,7 @@
 #, sh-format
 msgid "This is a combination of $count commit."
 msgid_plural "This is a combination of $count commits."
-msgstr[0] "Això és una combinació de $count comissió."
+msgstr[0] "Això és una combinació d'$count comissió."
 msgstr[1] "Això és una combinació de $count comissions."
 
 #: git-rebase--preserve-merges.sh:492
@@ -24415,7 +24417,7 @@
 "before\n"
 "you are able to reword the commit."
 msgstr ""
-"No s'ha pogut esmenar la comissió després d'escollir amb èxit $sha1... "
+"No s'ha pogut esmenar la comissió després de triar correctament $sha1... "
 "$rest\n"
 "Això és probablement a causa d'un missatge de comissió buit, o el lligam de\n"
 "precomissió ha fallat. Si el lligam de precomissió ha fallat, pot ser que\n"
@@ -24430,7 +24432,7 @@
 #: git-rebase--preserve-merges.sh:641
 #, sh-format
 msgid "Cannot '$squash_style' without a previous commit"
-msgstr "No es pot '$squash_style' sense una comissió prèvia"
+msgstr "No es pot fer «$squash_style» sense una comissió prèvia"
 
 #: git-rebase--preserve-merges.sh:683
 #, sh-format
@@ -24706,9 +24708,9 @@
 "Lines starting with %s will be removed.\n"
 msgstr ""
 "---\n"
-"Per suprimir «%s» línies, feu-les línies ' ' (context).\n"
-"Per suprimir «%s» línies, suprimiu-les.\n"
-"Les línies que comencin per %s seran suprimides.\n"
+"Per a eliminar les línies «%s», convertiu-les en línies ' ' (context).\n"
+"Per a eliminar les línies «%s», suprimiu-les.\n"
+"Les línies que comencin per %s s'eliminaran.\n"
 
 #: git-add--interactive.perl:1140
 #, perl-format
@@ -24984,7 +24986,7 @@
 #: git-send-email.perl:315
 #, perl-format
 msgid "'%s.final' contains the composed email.\n"
-msgstr "'%s.final' conté el correu redactat.\n"
+msgstr "«%s.final» conté el correu redactat.\n"
 
 #: git-send-email.perl:408
 msgid "--dump-aliases incompatible with other options\n"
@@ -25011,22 +25013,22 @@
 #: git-send-email.perl:528
 #, perl-format
 msgid "Unknown --confirm setting: '%s'\n"
-msgstr "--confirm setting desconegut: «%s»\n"
+msgstr "Paràmetre --confirm desconegut: «%s»\n"
 
 #: git-send-email.perl:556
 #, perl-format
 msgid "warning: sendmail alias with quotes is not supported: %s\n"
-msgstr "avís: el sobrenom de sendmail amb cometes no està suportat: %s\n"
+msgstr "avís: no s'admet l'àlies de sendmail amb cometes: %s\n"
 
 #: git-send-email.perl:558
 #, perl-format
 msgid "warning: `:include:` not supported: %s\n"
-msgstr "avís: `:include:` no està suportat: %s\n"
+msgstr "avís: «:include:» no s'admet: %s\n"
 
 #: git-send-email.perl:560
 #, perl-format
 msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
-msgstr "avís: les redireccions `/file` or `|pipe no són admeses: %s\n"
+msgstr "avís: les redireccions «/file» ni «|pipe» no s'admeten: %s\n"
 
 #: git-send-email.perl:565
 #, perl-format
@@ -25042,11 +25044,11 @@
 "    * Saying \"./%s\" if you mean a file; or\n"
 "    * Giving --format-patch option if you mean a range.\n"
 msgstr ""
-"El fitxer «%s» existeix però també pot ser un rang de comissions\n"
-"per produir pedaços. Desambigüeu...\n"
+"El fitxer «%s» existeix, però també pot ser un rang de comissions\n"
+"per produir pedaços. Desambigüeu-ho...\n"
 "\n"
-"    * Dient \"./%s\" si volíeu especificar aquest fitxer; o\n"
-"    * Proporcionant l'opció --format-patch si volíeu especificar un rang.\n"
+"    * Dient «./%s» si volíeu especificar un fitxer; o\n"
+"    * Proporcionant l'opció «--format-patch» si volíeu especificar un rang.\n"
 
 #: git-send-email.perl:670
 #, perl-format
@@ -25090,11 +25092,11 @@
 "\n"
 "Clear the body content if you don't wish to send a summary.\n"
 msgstr ""
-"Se suprimiran les línies que comencen amb \"GIT:\".\n"
+"S'eliminaran les línies que comencen amb «GIT:».\n"
 "Considereu incloure un diffstat global o una taula de continguts\n"
-"per cada pedaç que esteu escrivint.\n"
+"per al pedaç que esteu escrivint.\n"
 "\n"
-"Netegeu el contingut del cos si no voleu enviar un resum.\n"
+"Esborreu el contingut del cos si no voleu enviar cap resum.\n"
 
 #: git-send-email.perl:763
 #, perl-format
@@ -25138,8 +25140,8 @@
 msgstr ""
 "S'ha refusat a enviar perquè el pedaç\n"
 "\t%s\n"
-"perquè la plantilla té l'assumpte '*** SUBJECT HERE ***'. Passeu --force si "
-"realment voleu enviar-lo.\n"
+"perquè la plantilla té l'assumpte «*** SUBJECT HERE ***». Passeu --force si "
+"realment voleu enviar-ho.\n"
 
 #: git-send-email.perl:945
 msgid "To whom should the emails be sent (if anyone)?"
@@ -25193,9 +25195,9 @@
 "    Aquest comportament està controlat pel paràmetre de configuració\n"
 "    sendemail.confirm.\n"
 "\n"
-"    Per a informació addicional, executeu 'git send-email --help'.\n"
+"    Per a informació addicional, executeu «git send-email --help».\n"
 "    Per mantenir el comportament actual, però silenciar aquest\n"
-"    missatge, executeu 'git config --global sendemail.confirm auto'.\n"
+"    missatge, executeu «git config --global sendemail.confirm auto».\n"
 "\n"
 
 #. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
@@ -25298,7 +25300,7 @@
 
 #: git-send-email.perl:1875
 #, perl-format
-msgid "(%s) failed to close pipe to '%s'" 
+msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) s'ha produït un error en tancar el conducte «%s»"
 
 #: git-send-email.perl:1905
diff --git a/po/de.po b/po/de.po
index 6356276..656de24 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,8 +8,8 @@
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-05-27 07:23+0800\n"
-"PO-Revision-Date: 2020-05-24 15:57+0100\n"
+"POT-Creation-Date: 2020-07-10 09:53+0800\n"
+"PO-Revision-Date: 2020-07-12 13:20+0100\n"
 "Last-Translator: Matthias Rüster <matthias.ruester@gmail.com>\n"
 "Language-Team: Matthias Rüster <matthias.ruester@gmail.com>\n"
 "Language: de\n"
@@ -111,21 +111,21 @@
 msgid "ignoring unmerged: %s"
 msgstr "Ignoriere nicht zusammengeführte Datei: %s"
 
-#: add-interactive.c:929 add-patch.c:1675 git-add--interactive.perl:1366
+#: add-interactive.c:929 add-patch.c:1691 git-add--interactive.perl:1368
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Nur Binärdateien geändert.\n"
 
-#: add-interactive.c:931 add-patch.c:1673 git-add--interactive.perl:1368
+#: add-interactive.c:931 add-patch.c:1689 git-add--interactive.perl:1370
 #, c-format
 msgid "No changes.\n"
 msgstr "Keine Änderungen.\n"
 
-#: add-interactive.c:935 git-add--interactive.perl:1376
+#: add-interactive.c:935 git-add--interactive.perl:1378
 msgid "Patch update"
 msgstr "Patch Aktualisierung"
 
-#: add-interactive.c:974 git-add--interactive.perl:1754
+#: add-interactive.c:974 git-add--interactive.perl:1771
 msgid "Review diff"
 msgstr "Diff überprüfen"
 
@@ -193,11 +193,11 @@
 msgid "(empty) select nothing"
 msgstr "(leer) nichts auswählen"
 
-#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1851
+#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1868
 msgid "*** Commands ***"
 msgstr "*** Befehle ***"
 
-#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1848
+#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1865
 msgid "What now"
 msgstr "Was nun"
 
@@ -214,7 +214,7 @@
 #: builtin/merge.c:276 builtin/pull.c:190 builtin/submodule--helper.c:409
 #: builtin/submodule--helper.c:1394 builtin/submodule--helper.c:1397
 #: builtin/submodule--helper.c:1902 builtin/submodule--helper.c:1905
-#: builtin/submodule--helper.c:2148 bugreport.c:129
+#: builtin/submodule--helper.c:2148 bugreport.c:135
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "Pfad"
@@ -223,27 +223,32 @@
 msgid "could not refresh index"
 msgstr "Index konnte nicht aktualisiert werden"
 
-#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1765
+#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1782
 #, c-format
 msgid "Bye.\n"
 msgstr "Tschüss.\n"
 
-#: add-patch.c:34 git-add--interactive.perl:1428
+#: add-patch.c:34 git-add--interactive.perl:1430
 #, c-format, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "Modusänderung der Staging-Area hinzufügen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:35 git-add--interactive.perl:1429
+#: add-patch.c:35 git-add--interactive.perl:1431
 #, c-format, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "Löschung der Staging-Area hinzufügen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:36 git-add--interactive.perl:1430
+#: add-patch.c:36 git-add--interactive.perl:1432
+#, c-format, perl-format
+msgid "Stage addition [y,n,q,a,d%s,?]? "
+msgstr "Ergänzung der Staging-Area hinzufügen [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:37 git-add--interactive.perl:1433
 #, c-format, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Diesen Patch-Block der Staging-Area hinzufügen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:38
+#: add-patch.c:39
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "staging."
@@ -251,7 +256,7 @@
 "Wenn der Patch sauber angewendet werden kann, wird der bearbeitete Patch-"
 "Block direkt für die Staging-Area markiert."
 
-#: add-patch.c:41
+#: add-patch.c:42
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -267,22 +272,27 @@
 "d - diesen oder alle weiteren Patch-Blöcke in dieser Datei nicht zum Commit "
 "vormerken\n"
 
-#: add-patch.c:55 git-add--interactive.perl:1433
+#: add-patch.c:56 git-add--interactive.perl:1436
 #, c-format, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "Modusänderung stashen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:56 git-add--interactive.perl:1434
+#: add-patch.c:57 git-add--interactive.perl:1437
 #, c-format, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "Löschung stashen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:57 git-add--interactive.perl:1435
+#: add-patch.c:58 git-add--interactive.perl:1438
+#, c-format, perl-format
+msgid "Stash addition [y,n,q,a,d%s,?]? "
+msgstr "Ergänzung stashen [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:59 git-add--interactive.perl:1439
 #, c-format, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "Diesen Patch-Block stashen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:59
+#: add-patch.c:61
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "stashing."
@@ -290,7 +300,7 @@
 "Wenn der Patch sauber angewendet werden kann, wird der bearbeitete Patch-"
 "Block direkt zum Stashen markiert."
 
-#: add-patch.c:62
+#: add-patch.c:64
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -304,22 +314,27 @@
 "a - diesen und alle weiteren Patch-Blöcke dieser Datei stashen\n"
 "d - diesen oder alle weiteren Patch-Blöcke dieser Datei nicht stashen\n"
 
-#: add-patch.c:78 git-add--interactive.perl:1438
+#: add-patch.c:80 git-add--interactive.perl:1442
 #, c-format, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr "Modusänderung aus der Staging-Area entfernen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:79 git-add--interactive.perl:1439
+#: add-patch.c:81 git-add--interactive.perl:1443
 #, c-format, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "Löschung aus der Staging-Area entfernen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:80 git-add--interactive.perl:1440
+#: add-patch.c:82 git-add--interactive.perl:1444
+#, c-format, perl-format
+msgid "Unstage addition [y,n,q,a,d%s,?]? "
+msgstr "Ergänzung aus der Staging-Area entfernen [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:83 git-add--interactive.perl:1445
 #, c-format, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Diesen Patch-Block aus der Staging-Area entfernen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:82
+#: add-patch.c:85
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "unstaging."
@@ -327,7 +342,7 @@
 "Wenn der Patch sauber angewendet werden kann, wird der bearbeitete Patch-"
 "Block direkt zum Entfernen aus der Staging-Area markiert."
 
-#: add-patch.c:85
+#: add-patch.c:88
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -344,22 +359,27 @@
 "d - diesen oder alle weiteren Patch-Blöcke dieser Datei nicht aus Staging-"
 "Area entfernen\n"
 
-#: add-patch.c:100 git-add--interactive.perl:1443
+#: add-patch.c:103 git-add--interactive.perl:1448
 #, c-format, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr "Modusänderung auf Index anwenden [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:101 git-add--interactive.perl:1444
+#: add-patch.c:104 git-add--interactive.perl:1449
 #, c-format, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "Löschung auf Index anwenden [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:102 git-add--interactive.perl:1445
+#: add-patch.c:105 git-add--interactive.perl:1450
+#, c-format, perl-format
+msgid "Apply addition to index [y,n,q,a,d%s,?]? "
+msgstr "Ergänzung auf Index anwenden [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:106 git-add--interactive.perl:1451
 #, c-format, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr "Diesen Patch-Block auf Index anwenden [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:104 add-patch.c:169 add-patch.c:212
+#: 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."
@@ -367,7 +387,7 @@
 "Wenn der Patch sauber angewendet werden kann, wird der bearbeitete Patch-"
 "Block direkt zum Anwenden markiert."
 
-#: add-patch.c:107
+#: add-patch.c:111
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -384,25 +404,31 @@
 "d - diesen oder alle weiteren Patch-Blöcke dieser Datei nicht auf den Index "
 "anwenden\n"
 
-#: add-patch.c:122 git-add--interactive.perl:1448
-#: git-add--interactive.perl:1463
+#: add-patch.c:126 git-add--interactive.perl:1454
+#: git-add--interactive.perl:1472
 #, c-format, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr "Modusänderung im Arbeitsverzeichnis verwerfen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:123 git-add--interactive.perl:1449
-#: git-add--interactive.perl:1464
+#: add-patch.c:127 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
 #, c-format, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr "Löschung im Arbeitsverzeichnis verwerfen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:124 git-add--interactive.perl:1450
-#: git-add--interactive.perl:1465
+#: add-patch.c:128 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
+#, c-format, perl-format
+msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
+msgstr "Ergänzung im Arbeitsverzeichnis verwerfen [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:129 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
 #, c-format, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr "Diesen Patch-Block im Arbeitsverzeichnis verwerfen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:126 add-patch.c:148 add-patch.c:191
+#: 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."
@@ -410,7 +436,7 @@
 "Wenn der Patch sauber angewendet werden kann, wird der bearbeitete Patch-"
 "Block direkt zum Verwerfen markiert."
 
-#: add-patch.c:129 add-patch.c:194
+#: add-patch.c:134 add-patch.c:202
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -427,25 +453,30 @@
 "d - diesen oder alle weiteren Patch-Blöcke dieser Datei nicht im "
 "Arbeitsverzeichnis verwerfen\n"
 
-#: add-patch.c:144 add-patch.c:187 git-add--interactive.perl:1453
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1460
 #, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Modusänderung vom Index und Arbeitsverzeichnis verwerfen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:145 add-patch.c:188 git-add--interactive.perl:1454
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1461
 #, c-format, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Löschung vom Index und Arbeitsverzeichnis verwerfen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:146 add-patch.c:189 git-add--interactive.perl:1455
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1462
+#,  c-format, perl-format
+msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Ergänzung im Index und Arbeitsverzeichnis verwerfen [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1463
 #, c-format, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Diesen Patch-Block vom Index und Arbeitsverzeichnis verwerfen [y,n,q,a,d"
 "%s,?]? "
 
-#: add-patch.c:151
+#: add-patch.c:157
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -459,25 +490,30 @@
 "a - diesen und alle weiteren Patch-Blöcke in der Datei verwerfen\n"
 "d - diesen oder alle weiteren Patch-Blöcke in der Datei nicht verwerfen\n"
 
-#: add-patch.c:165 add-patch.c:208 git-add--interactive.perl:1458
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1466
 #, c-format, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Modusänderung auf Index und Arbeitsverzeichnis anwenden [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:166 add-patch.c:209 git-add--interactive.perl:1459
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1467
 #, c-format, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Löschung auf Index und Arbeitsverzeichnis anwenden [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:167 add-patch.c:210 git-add--interactive.perl:1460
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1468
+#, c-format, perl-format
+msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Ergänzung auf Index und Arbeitsverzeichnis anwenden [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1469
 #, c-format, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Diesen Patch-Block auf Index und Arbeitsverzeichnis anwenden [y,n,q,a,d"
 "%s,?]? "
 
-#: add-patch.c:172
+#: add-patch.c:179
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -492,7 +528,7 @@
 "a - diesen und alle weiteren Patch-Blöcke in der Datei anwenden\n"
 "d - diesen oder alle weiteren Patch-Blöcke in der Datei nicht anwenden\n"
 
-#: add-patch.c:215
+#: add-patch.c:224
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -506,34 +542,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:319
+#: add-patch.c:328
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "Konnte Block-Header '%.*s' nicht parsen."
 
-#: add-patch.c:338 add-patch.c:342
+#: add-patch.c:347 add-patch.c:351
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "Konnte farbigen Block-Header '%.*s' nicht parsen."
 
-#: add-patch.c:396
+#: add-patch.c:405
 msgid "could not parse diff"
 msgstr "Konnte Differenz nicht parsen."
 
-#: add-patch.c:415
+#: add-patch.c:424
 msgid "could not parse colored diff"
 msgstr "Konnte farbige Differenz nicht parsen."
 
-#: add-patch.c:429
+#: add-patch.c:438
 #, c-format
 msgid "failed to run '%s'"
 msgstr "'%s' konnte nicht ausgeführt werden"
 
-#: add-patch.c:588
+#: add-patch.c:602
 msgid "mismatched output from interactive.diffFilter"
 msgstr "nicht übereinstimmende Ausgabe von interactive.diffFilter"
 
-#: add-patch.c:589
+#: add-patch.c:603
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -541,7 +577,7 @@
 "Der Filter muss eine Eins-zu-Eins-Beziehung\n"
 "zwischen den Ein- und Ausgabe-Zeilen einhalten."
 
-#: add-patch.c:762
+#: add-patch.c:776
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -550,7 +586,7 @@
 "Erwartete Kontextzeile #%d in\n"
 "%.*s"
 
-#: add-patch.c:777
+#: add-patch.c:791
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -563,13 +599,13 @@
 "\tendet nicht mit:\n"
 "%.*s"
 
-#: add-patch.c:1053 git-add--interactive.perl:1112
+#: add-patch.c:1067 git-add--interactive.perl:1114
 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:1057
+#: add-patch.c:1071
 #, c-format
 msgid ""
 "---\n"
@@ -583,7 +619,7 @@
 "Zeilen, die mit %c beginnen, werden entfernt.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1071 git-add--interactive.perl:1126
+#: add-patch.c:1085 git-add--interactive.perl:1128
 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"
@@ -594,11 +630,11 @@
 "werden,\n"
 "wird die Bearbeitung abgebrochen und der Patch-Block bleibt unverändert.\n"
 
-#: add-patch.c:1104
+#: add-patch.c:1118
 msgid "could not parse hunk header"
 msgstr "Konnte Block-Header nicht parsen."
 
-#: add-patch.c:1149
+#: add-patch.c:1163
 msgid "'git apply --cached' failed"
 msgstr "'git apply --cached' schlug fehl."
 
@@ -614,27 +650,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:1218 git-add--interactive.perl:1239
+#: add-patch.c:1232 git-add--interactive.perl:1241
 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:1261
+#: add-patch.c:1275
 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:1262 git-add--interactive.perl:1343
+#: add-patch.c:1276 git-add--interactive.perl:1345
 msgid "Apply them to the worktree anyway? "
 msgstr "Trotzdem auf Arbeitsverzeichnis anwenden? "
 
-#: add-patch.c:1269 git-add--interactive.perl:1346
+#: add-patch.c:1283 git-add--interactive.perl:1348
 msgid "Nothing was applied.\n"
 msgstr "Nichts angewendet.\n"
 
-#: add-patch.c:1326
+#: add-patch.c:1340
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -658,69 +694,69 @@
 "e - aktuellen Patch-Block manuell editieren\n"
 "? - Hilfe anzeigen\n"
 
-#: add-patch.c:1447 add-patch.c:1457
+#: add-patch.c:1463 add-patch.c:1473
 msgid "No previous hunk"
 msgstr "Kein vorheriger Patch-Block"
 
-#: add-patch.c:1452 add-patch.c:1462
+#: add-patch.c:1468 add-patch.c:1478
 msgid "No next hunk"
 msgstr "Kein folgender Patch-Block"
 
-#: add-patch.c:1468
+#: add-patch.c:1484
 msgid "No other hunks to goto"
 msgstr "Keine anderen Patch-Blöcke verbleibend"
 
-#: add-patch.c:1479 git-add--interactive.perl:1577
+#: add-patch.c:1495 git-add--interactive.perl:1594
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "zu welchem Patch-Block springen (<Enter> für mehr Informationen)? "
 
-#: add-patch.c:1480 git-add--interactive.perl:1579
+#: add-patch.c:1496 git-add--interactive.perl:1596
 msgid "go to which hunk? "
 msgstr "zu welchem Patch-Block springen? "
 
-#: add-patch.c:1491
+#: add-patch.c:1507
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Ungültige Nummer: '%s'"
 
-#: add-patch.c:1496
+#: add-patch.c:1512
 #, 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:1505
+#: add-patch.c:1521
 msgid "No other hunks to search"
 msgstr "Keine anderen Patch-Blöcke zum Durchsuchen"
 
-#: add-patch.c:1511 git-add--interactive.perl:1623
+#: add-patch.c:1527 git-add--interactive.perl:1640
 msgid "search for regex? "
 msgstr "Suche nach regulärem Ausdruck? "
 
-#: add-patch.c:1526
+#: add-patch.c:1542
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Fehlerhafter regulärer Ausdruck für Suche %s: %s"
 
-#: add-patch.c:1543
+#: add-patch.c:1559
 msgid "No hunk matches the given pattern"
 msgstr "Kein Patch-Block entspricht dem angegebenen Muster"
 
-#: add-patch.c:1550
+#: add-patch.c:1566
 msgid "Sorry, cannot split this hunk"
 msgstr "Entschuldigung, kann diesen Patch-Block nicht aufteilen"
 
-#: add-patch.c:1554
+#: add-patch.c:1570
 #, c-format
 msgid "Split into %d hunks."
 msgstr "In %d Patch-Block aufgeteilt."
 
-#: add-patch.c:1558
+#: add-patch.c:1574
 msgid "Sorry, cannot edit this hunk"
 msgstr "Entschuldigung, kann diesen Patch-Block nicht bearbeiten"
 
-#: add-patch.c:1609
+#: add-patch.c:1625
 msgid "'git apply' failed"
 msgstr "'git apply' schlug fehl"
 
@@ -1438,7 +1474,7 @@
 
 #: apply.c:5008 builtin/am.c:2238 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3458 builtin/rebase.c:1332
+#: builtin/pack-objects.c:3530 builtin/rebase.c:1332
 msgid "action"
 msgstr "Aktion"
 
@@ -1528,7 +1564,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "Pfad zu lang (%d Zeichen, SHA1: %s): %s"
 
-#: archive-zip.c:480 builtin/pack-objects.c:232 builtin/pack-objects.c:235
+#: archive-zip.c:480 builtin/pack-objects.c:243 builtin/pack-objects.c:246
 #, c-format
 msgid "deflate error (%d)"
 msgstr "Fehler beim Komprimieren (%d)"
@@ -1598,8 +1634,8 @@
 msgstr "einen Präfix vor jeden Pfadnamen in dem Archiv stellen"
 
 #: archive.c:467 builtin/blame.c:861 builtin/blame.c:865 builtin/blame.c:866
-#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1162
-#: builtin/fast-export.c:1164 builtin/fast-export.c:1168 builtin/grep.c:907
+#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1208
+#: builtin/fast-export.c:1210 builtin/fast-export.c:1214 builtin/grep.c:907
 #: 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
@@ -1828,10 +1864,10 @@
 "endgültigen\n"
 "Commits"
 
-#: blame.c:2821 bundle.c:167 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
+#: blame.c:2821 bundle.c:187 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
 #: sequencer.c:4466 submodule.c:847 builtin/commit.c:1047 builtin/log.c:405
 #: builtin/log.c:1012 builtin/log.c:1541 builtin/log.c:1945 builtin/log.c:2235
-#: builtin/merge.c:415 builtin/pack-objects.c:3276 builtin/pack-objects.c:3291
+#: builtin/merge.c:415 builtin/pack-objects.c:3348 builtin/pack-objects.c:3363
 #: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr "Einrichtung des Revisionsgangs fehlgeschlagen"
@@ -1995,84 +2031,88 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "HEAD des Arbeitsverzeichnisses %s ist nicht aktualisiert."
 
-#: bundle.c:36
+#: bundle.c:47
 #, c-format
 msgid "'%s' does not look like a v2 bundle file"
 msgstr "'%s' sieht nicht wie eine v2 Paketdatei aus"
 
-#: bundle.c:64
+#: bundle.c:69
+msgid "unknown hash algorithm length"
+msgstr "unbekannte Länge des Hash-Algorithmus"
+
+#: bundle.c:84
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "nicht erkannter Kopfbereich: %s%s (%d)"
 
-#: bundle.c:90 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
+#: bundle.c:110 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
 msgstr "Konnte '%s' nicht öffnen"
 
-#: bundle.c:143
+#: bundle.c:163
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Dem Repository fehlen folgende vorausgesetzte Commits:"
 
-#: bundle.c:146
+#: bundle.c:166
 msgid "need a repository to verify a bundle"
 msgstr "Um ein Paket zu überprüfen wird ein Repository benötigt."
 
-#: bundle.c:197
+#: bundle.c:217
 #, 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:204
+#: bundle.c:224
 msgid "The bundle records a complete history."
 msgstr "Das Paket speichert eine komplette Historie."
 
-#: bundle.c:206
+#: bundle.c:226
 #, 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:273
+#: bundle.c:293
 msgid "unable to dup bundle descriptor"
 msgstr "Konnte dup für Descriptor des Pakets nicht ausführen."
 
-#: bundle.c:280
+#: bundle.c:300
 msgid "Could not spawn pack-objects"
 msgstr "Konnte Paketobjekte nicht erstellen"
 
-#: bundle.c:291
+#: bundle.c:311
 msgid "pack-objects died"
 msgstr "Erstellung der Paketobjekte abgebrochen"
 
-#: bundle.c:333
+#: bundle.c:353
 msgid "rev-list died"
 msgstr "\"rev-list\" abgebrochen"
 
-#: bundle.c:382
+#: bundle.c:402
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "Referenz '%s' wird durch \"rev-list\" Optionen ausgeschlossen"
 
-#: bundle.c:461 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
+#: bundle.c:481 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "nicht erkanntes Argument: %s"
 
-#: bundle.c:469
+#: bundle.c:489
 msgid "Refusing to create empty bundle."
 msgstr "Erstellung eines leeren Pakets zurückgewiesen."
 
-#: bundle.c:479
+#: bundle.c:499
 #, c-format
 msgid "cannot create '%s'"
 msgstr "kann '%s' nicht erstellen"
 
-#: bundle.c:504
+#: bundle.c:524
 msgid "index-pack died"
 msgstr "Erstellung der Paketindexdatei abgebrochen"
 
@@ -2081,258 +2121,250 @@
 msgid "invalid color value: %.*s"
 msgstr "Ungültiger Farbwert: %.*s"
 
-#: commit-graph.c:183
+#: commit-graph.c:238
 msgid "commit-graph file is too small"
 msgstr "Commit-Graph-Datei ist zu klein."
 
-#: commit-graph.c:248
+#: commit-graph.c:303
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "Commit-Graph-Signatur %X stimmt nicht mit Signatur %X überein."
 
-#: commit-graph.c:255
+#: commit-graph.c:310
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "Commit-Graph-Version %X stimmt nicht mit Version %X überein."
 
-#: commit-graph.c:262
+#: commit-graph.c:317
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "Hash-Version des Commit-Graph %X stimmt nicht mit Version %X überein."
 
-#: commit-graph.c:284
+#: commit-graph.c:339
 msgid "commit-graph chunk lookup table entry missing; file may be incomplete"
 msgstr ""
 "fehlender Tabelleneintrag für Commit-Graph Chunk-Lookup; Datei "
 "möglicherweise unvollständig"
 
-#: commit-graph.c:294
+#: commit-graph.c:349
 #, c-format
 msgid "commit-graph improper chunk offset %08x%08x"
 msgstr "Unzulässiger Commit-Graph Chunk-Offset %08x%08x"
 
-#: commit-graph.c:362
+#: commit-graph.c:417
 #, c-format
 msgid "commit-graph chunk id %08x appears multiple times"
 msgstr "Commit-Graph Chunk-Id %08x kommt mehrfach vor."
 
-#: commit-graph.c:436
+#: commit-graph.c:491
 msgid "commit-graph has no base graphs chunk"
 msgstr "Commit-Graph hat keinen Basis-Graph-Chunk"
 
-#: commit-graph.c:446
+#: commit-graph.c:501
 msgid "commit-graph chain does not match"
 msgstr "Commit-Graph Verkettung stimmt nicht überein."
 
-#: commit-graph.c:494
+#: commit-graph.c:549
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "Ungültige Commit-Graph Verkettung: Zeile '%s' ist kein Hash"
 
-#: commit-graph.c:518
+#: commit-graph.c:573
 msgid "unable to find all commit-graph files"
 msgstr "Konnte nicht alle Commit-Graph-Dateien finden."
 
-#: commit-graph.c:651 commit-graph.c:711
+#: commit-graph.c:706 commit-graph.c:770
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr "Ungültige Commit-Position. Commit-Graph ist wahrscheinlich beschädigt."
 
-#: commit-graph.c:672
+#: commit-graph.c:727
 #, c-format
 msgid "could not find commit %s"
 msgstr "Konnte Commit %s nicht finden."
 
-#: commit-graph.c:948 builtin/am.c:1292
+#: commit-graph.c:1009 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "Konnte Commit '%s' nicht parsen."
 
-#: commit-graph.c:1096
+#: commit-graph.c:1157
 msgid "Writing changed paths Bloom filters index"
 msgstr "Schreibe Index für veränderte Pfade Bloom-Filter"
 
-#: commit-graph.c:1121
+#: commit-graph.c:1182
 msgid "Writing changed paths Bloom filters data"
 msgstr "Schreibe Daten für veränderte Pfade Bloom-Filter"
 
-#: commit-graph.c:1160 builtin/pack-objects.c:2783
+#: commit-graph.c:1221 builtin/pack-objects.c:2832
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "Konnte Art von Objekt '%s' nicht bestimmen."
 
-#: commit-graph.c:1196
+#: commit-graph.c:1257
 msgid "Loading known commits in commit graph"
 msgstr "Lade bekannte Commits in Commit-Graph"
 
-#: commit-graph.c:1213
+#: commit-graph.c:1274
 msgid "Expanding reachable commits in commit graph"
 msgstr "Erweitere erreichbare Commits in Commit-Graph"
 
-#: commit-graph.c:1233
+#: commit-graph.c:1294
 msgid "Clearing commit marks in commit graph"
 msgstr "Lösche Commit-Markierungen in Commit-Graph"
 
-#: commit-graph.c:1252
+#: commit-graph.c:1313
 msgid "Computing commit graph generation numbers"
 msgstr "Commit-Graph Generationsnummern berechnen"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1367
 msgid "Computing commit changed paths Bloom filters"
 msgstr "Berechnung der Bloom-Filter für veränderte Pfade des Commits"
 
-#: commit-graph.c:1359
+#: commit-graph.c:1423
+msgid "Collecting referenced commits"
+msgstr "Sammle referenzierte Commits"
+
+#: commit-graph.c:1447
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "Suche Commits für Commit-Graph in %d Paket"
 msgstr[1] "Suche Commits für Commit-Graph in %d Paketen"
 
-#: commit-graph.c:1372
+#: commit-graph.c:1460
 #, c-format
 msgid "error adding pack %s"
 msgstr "Fehler beim Hinzufügen von Paket %s."
 
-#: commit-graph.c:1376
+#: commit-graph.c:1464
 #, c-format
 msgid "error opening index for %s"
 msgstr "Fehler beim Öffnen des Index für %s."
 
-#: commit-graph.c:1405
-#, c-format
-msgid "Finding commits for commit graph from %d ref"
-msgid_plural "Finding commits for commit graph from %d refs"
-msgstr[0] "Suche Commits für Commit-Graph in %d Referenz"
-msgstr[1] "Suche Commits für Commit-Graph in %d Referenzen"
-
-#: commit-graph.c:1426
-#, c-format
-msgid "invalid commit object id: %s"
-msgstr "ungültige Commit-Objekt-ID: %s"
-
-#: commit-graph.c:1442
+#: commit-graph.c:1503
 msgid "Finding commits for commit graph among packed objects"
 msgstr "Suche Commits für Commit-Graph in gepackten Objekten"
 
-#: commit-graph.c:1457
+#: commit-graph.c:1518
 msgid "Counting distinct commits in commit graph"
 msgstr "Zähle Commits in Commit-Graph"
 
-#: commit-graph.c:1489
+#: commit-graph.c:1550
 msgid "Finding extra edges in commit graph"
 msgstr "Suche zusätzliche Ränder in Commit-Graph"
 
-#: commit-graph.c:1538
+#: commit-graph.c:1599
 msgid "failed to write correct number of base graph ids"
 msgstr "Fehler beim Schreiben der korrekten Anzahl von Basis-Graph-IDs."
 
-#: commit-graph.c:1572 midx.c:812
+#: commit-graph.c:1633 midx.c:812
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "Konnte führende Verzeichnisse von '%s' nicht erstellen."
 
-#: commit-graph.c:1585
+#: commit-graph.c:1646
 msgid "unable to create temporary graph layer"
 msgstr "konnte temporäre Graphen-Schicht nicht erstellen"
 
-#: commit-graph.c:1590
+#: commit-graph.c:1651
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "konnte geteilte Zugriffsberechtigungen für '%s' nicht ändern"
 
-#: commit-graph.c:1667
+#: commit-graph.c:1728
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "Schreibe Commit-Graph in %d Durchgang"
 msgstr[1] "Schreibe Commit-Graph in %d Durchgängen"
 
-#: commit-graph.c:1712
+#: commit-graph.c:1773
 msgid "unable to open commit-graph chain file"
 msgstr "Konnte Commit-Graph Chain-Datei nicht öffnen."
 
-#: commit-graph.c:1728
+#: commit-graph.c:1789
 msgid "failed to rename base commit-graph file"
 msgstr "Konnte Basis-Commit-Graph-Datei nicht umbenennen."
 
-#: commit-graph.c:1748
+#: commit-graph.c:1809
 msgid "failed to rename temporary commit-graph file"
 msgstr "Konnte temporäre Commit-Graph-Datei nicht umbenennen."
 
-#: commit-graph.c:1874
+#: commit-graph.c:1935
 msgid "Scanning merged commits"
 msgstr "Durchsuche zusammengeführte Commits"
 
-#: commit-graph.c:1885
+#: commit-graph.c:1946
 #, c-format
 msgid "unexpected duplicate commit id %s"
 msgstr "Unerwartete doppelte Commit-ID %s"
 
-#: commit-graph.c:1908
+#: commit-graph.c:1969
 msgid "Merging commit-graph"
 msgstr "Zusammenführen von Commit-Graph"
 
-#: commit-graph.c:2096
+#: commit-graph.c:2156
 #, c-format
 msgid "the commit graph format cannot write %d commits"
 msgstr "Das Commit-Graph Format kann nicht %d Commits schreiben."
 
-#: commit-graph.c:2107
+#: commit-graph.c:2167
 msgid "too many commits to write graph"
 msgstr "Zu viele Commits zum Schreiben des Graphen."
 
-#: commit-graph.c:2200
+#: commit-graph.c:2260
 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:2210
+#: commit-graph.c:2270
 #, 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:2220 commit-graph.c:2235
+#: commit-graph.c:2280 commit-graph.c:2295
 #, 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:2227
+#: commit-graph.c:2287
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "Konnte Commit %s von Commit-Graph nicht parsen."
 
-#: commit-graph.c:2245
+#: commit-graph.c:2305
 msgid "Verifying commits in commit graph"
 msgstr "Commit in Commit-Graph überprüfen"
 
-#: commit-graph.c:2259
+#: commit-graph.c:2320
 #, 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:2266
+#: commit-graph.c:2327
 #, 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:2276
+#: commit-graph.c:2337
 #, 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:2285
+#: commit-graph.c:2346
 #, 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:2298
+#: commit-graph.c:2360
 #, 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:2303
+#: commit-graph.c:2365
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2340,7 +2372,7 @@
 "Commit-Graph hat Generationsnummer null für Commit %s, aber sonst ungleich "
 "null"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2369
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2348,12 +2380,12 @@
 "Commit-Graph hat Generationsnummer ungleich null für Commit %s, aber sonst "
 "null"
 
-#: commit-graph.c:2322
+#: commit-graph.c:2385
 #, c-format
 msgid "commit-graph generation for commit %s is %u != %u"
 msgstr "Commit-Graph Erstellung für Commit %s ist %u != %u"
 
-#: commit-graph.c:2328
+#: commit-graph.c:2391
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
@@ -2391,28 +2423,28 @@
 "Sie können diese Meldung unterdrücken, indem Sie\n"
 "\"git config advice.graftFileDeprecated false\" ausführen."
 
-#: commit.c:1168
+#: commit.c:1172
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 "Commit %s hat eine nicht vertrauenswürdige GPG-Signatur, angeblich von %s."
 
-#: commit.c:1172
+#: commit.c:1176
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "Commit %s hat eine ungültige GPG-Signatur, angeblich von %s."
 
-#: commit.c:1175
+#: commit.c:1179
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Commit %s hat keine GPG-Signatur."
 
-#: commit.c:1178
+#: commit.c:1182
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "Commit %s hat eine gültige GPG-Signatur von %s\n"
 
-#: commit.c:1432
+#: commit.c:1436
 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"
@@ -2614,7 +2646,7 @@
 msgstr ""
 "Muss einer von diesen sein: nothing, matching, simple, upstream, current"
 
-#: config.c:1533 builtin/pack-objects.c:3542
+#: config.c:1533 builtin/pack-objects.c:3617
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "ungültiger Komprimierungsgrad (%d) für Paketierung"
@@ -2770,74 +2802,83 @@
 msgid "server doesn't support '%s'"
 msgstr "Der Server unterstützt kein '%s'."
 
-#: connect.c:103
+#: connect.c:118
 #, c-format
 msgid "server doesn't support feature '%s'"
 msgstr "Der Server unterstützt das Feature '%s' nicht."
 
-#: connect.c:114
+#: connect.c:129
 msgid "expected flush after capabilities"
 msgstr "Erwartete Flush nach Fähigkeiten."
 
-#: connect.c:233
+#: connect.c:263
 #, c-format
 msgid "ignoring capabilities after first line '%s'"
 msgstr "Ignoriere Fähigkeiten nach der ersten Zeile '%s'."
 
-#: connect.c:252
+#: connect.c:284
 msgid "protocol error: unexpected capabilities^{}"
 msgstr "Protokollfehler: unerwartetes capabilities^{}"
 
-#: connect.c:273
+#: connect.c:306
 #, c-format
 msgid "protocol error: expected shallow sha-1, got '%s'"
 msgstr "Protokollfehler: shallow SHA-1 erwartet, '%s' bekommen"
 
-#: connect.c:275
+#: connect.c:308
 msgid "repository on the other end cannot be shallow"
 msgstr ""
 "Repository auf der Gegenseite kann keine unvollständige Historie (shallow) "
 "enthalten"
 
-#: connect.c:313
+#: connect.c:347
 msgid "invalid packet"
-msgstr "Ungültiges Paket."
+msgstr "ungültiges Paket"
 
-#: connect.c:333
+#: connect.c:367
 #, c-format
 msgid "protocol error: unexpected '%s'"
 msgstr "Protokollfehler: unerwartetes '%s'"
 
-#: connect.c:441
+#: connect.c:473
+#, c-format
+msgid "unknown object format '%s' specified by server"
+msgstr "unbekanntes Objekt-Format '%s' vom Server angegeben"
+
+#: connect.c:500
 #, c-format
 msgid "invalid ls-refs response: %s"
-msgstr "Ungültige ls-refs Antwort: %s"
+msgstr "ungültige ls-refs Antwort: %s"
 
-#: connect.c:445
+#: connect.c:504
 msgid "expected flush after ref listing"
-msgstr "Erwartete Flush nach Auflistung der Referenzen."
+msgstr "Flush nach Auflistung der Referenzen erwartet"
 
-#: connect.c:544
+#: connect.c:507
+msgid "expected response end packet after ref listing"
+msgstr "Antwort-Endpaket nach Auflistung der Referenzen erwartet"
+
+#: connect.c:640
 #, c-format
 msgid "protocol '%s' is not supported"
-msgstr "Protokoll '%s' wird nicht unterstützt."
+msgstr "Protokoll '%s' wird nicht unterstützt"
 
-#: connect.c:595
+#: connect.c:691
 msgid "unable to set SO_KEEPALIVE on socket"
-msgstr "Kann SO_KEEPALIVE bei Socket nicht setzen."
+msgstr "kann SO_KEEPALIVE bei Socket nicht setzen"
 
-#: connect.c:635 connect.c:698
+#: connect.c:731 connect.c:794
 #, c-format
 msgid "Looking up %s ... "
 msgstr "Suche nach %s ..."
 
-#: connect.c:639
+#: connect.c:735
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "Fehler bei Suche nach %s (Port %s) (%s)."
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:643 connect.c:714
+#: connect.c:739 connect.c:810
 #, c-format
 msgid ""
 "done.\n"
@@ -2846,7 +2887,7 @@
 "Fertig.\n"
 "Verbinde nach %s (Port %s) ... "
 
-#: connect.c:665 connect.c:742
+#: connect.c:761 connect.c:838
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2856,76 +2897,76 @@
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:671 connect.c:748
+#: connect.c:767 connect.c:844
 msgid "done."
 msgstr "Fertig."
 
-#: connect.c:702
+#: connect.c:798
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "Fehler bei der Suche nach %s (%s)"
 
-#: connect.c:708
+#: connect.c:804
 #, c-format
 msgid "unknown port %s"
 msgstr "Unbekannter Port %s"
 
-#: connect.c:845 connect.c:1175
+#: connect.c:941 connect.c:1271
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "Merkwürdigen Hostnamen '%s' blockiert."
 
-#: connect.c:847
+#: connect.c:943
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "Merkwürdigen Port '%s' blockiert."
 
-#: connect.c:857
+#: connect.c:953
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "Kann Proxy %s nicht starten."
 
-#: connect.c:928
+#: connect.c:1024
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr ""
 "Kein Pfad angegeben; siehe 'git help pull' für eine gültige URL-Syntax."
 
-#: connect.c:1123
+#: connect.c:1219
 msgid "ssh variant 'simple' does not support -4"
 msgstr "SSH-Variante 'simple' unterstützt kein -4."
 
-#: connect.c:1135
+#: connect.c:1231
 msgid "ssh variant 'simple' does not support -6"
 msgstr "SSH-Variante 'simple' unterstützt kein -6."
 
-#: connect.c:1152
+#: connect.c:1248
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "SSH-Variante 'simple' unterstützt nicht das Setzen eines Ports."
 
-#: connect.c:1264
+#: connect.c:1360
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "Merkwürdigen Pfadnamen '%s' blockiert."
 
-#: connect.c:1311
+#: connect.c:1407
 msgid "unable to fork"
 msgstr "Kann Prozess nicht starten."
 
-#: connected.c:107 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:109 builtin/fsck.c:209 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Prüfe Konnektivität"
 
-#: connected.c:119
+#: connected.c:121
 msgid "Could not run 'git rev-list'"
 msgstr "Konnte 'git rev-list' nicht ausführen"
 
-#: connected.c:139
+#: connected.c:141
 msgid "failed write to rev-list"
 msgstr "Fehler beim Schreiben nach rev-list"
 
-#: connected.c:146
+#: connected.c:148
 msgid "failed to close rev-list's stdin"
-msgstr "Fehler beim Schließen von rev-list's Standard-Eingabe"
+msgstr "Fehler beim Schließen von rev-lists Standard-Eingabe"
 
 #: convert.c:194
 #, c-format
@@ -3191,18 +3232,18 @@
 "Kein Git-Repository. Nutzen Sie --no-index, um zwei Pfade außerhalb des "
 "Arbeitsverzeichnisses zu vergleichen."
 
-#: diff.c:155
+#: diff.c:156
 #, c-format
 msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
 msgstr ""
 "  Fehler beim Parsen des abgeschnittenen \"dirstat\" Prozentsatzes '%s'\n"
 
-#: diff.c:160
+#: diff.c:161
 #, c-format
 msgid "  Unknown dirstat parameter '%s'\n"
 msgstr "  Unbekannter \"dirstat\" Parameter '%s'\n"
 
-#: diff.c:296
+#: diff.c:297
 msgid ""
 "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
 "'dimmed-zebra', 'plain'"
@@ -3210,7 +3251,7 @@
 "\"color moved\"-Einstellung muss eines von diesen sein: 'no', 'default', "
 "'blocks', 'zebra', 'dimmed_zebra', 'plain'"
 
-#: diff.c:324
+#: diff.c:325
 #, c-format
 msgid ""
 "unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', "
@@ -3219,7 +3260,7 @@
 "Unbekannter color-moved-ws Modus '%s', mögliche Werte sind 'ignore-space-"
 "change', 'ignore-space-at-eol', 'ignore-all-space', 'allow-identation-change'"
 
-#: diff.c:332
+#: diff.c:333
 msgid ""
 "color-moved-ws: allow-indentation-change cannot be combined with other "
 "whitespace modes"
@@ -3227,12 +3268,12 @@
 "color-moved-ws: allow-indentation-change kann nicht mit anderen\n"
 "Whitespace-Modi kombiniert werden."
 
-#: diff.c:405
+#: diff.c:410
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
 msgstr "Unbekannter Wert in Konfigurationsvariable 'diff.dirstat': '%s'"
 
-#: diff.c:465
+#: diff.c:470
 #, c-format
 msgid ""
 "Found errors in 'diff.dirstat' config variable:\n"
@@ -3241,36 +3282,36 @@
 "Fehler in 'diff.dirstat' Konfigurationsvariable gefunden:\n"
 "%s"
 
-#: diff.c:4238
+#: diff.c:4243
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "externes Diff-Programm unerwartet beendet, angehalten bei %s"
 
-#: diff.c:4583
+#: diff.c:4589
 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:4586
+#: diff.c:4592
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S und --find-object schließen sich gegenseitig aus"
 
-#: diff.c:4664
+#: diff.c:4670
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow erfordert genau eine Pfadspezifikation"
 
-#: diff.c:4712
+#: diff.c:4718
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "Ungültiger --stat Wert: %s"
 
-#: diff.c:4717 diff.c:4722 diff.c:4727 diff.c:4732 diff.c:5245
+#: diff.c:4723 diff.c:4728 diff.c:4733 diff.c:4738 diff.c:5250
 #: parse-options.c:197 parse-options.c:201
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s erwartet einen numerischen Wert."
 
-#: diff.c:4749
+#: diff.c:4755
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3279,42 +3320,42 @@
 "Fehler beim Parsen des --dirstat/-X Optionsparameters:\n"
 "%s"
 
-#: diff.c:4834
+#: diff.c:4840
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "Unbekannte Änderungsklasse '%c' in --diff-filter=%s"
 
-#: diff.c:4858
+#: diff.c:4864
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "Unbekannter Wert nach ws-error-highlight=%.*s"
 
-#: diff.c:4872
+#: diff.c:4878
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "konnte '%s' nicht auflösen"
 
-#: diff.c:4922 diff.c:4928
+#: diff.c:4928 diff.c:4934
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s erwartet die Form <n>/<m>"
 
-#: diff.c:4940
+#: diff.c:4946
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s erwartet ein Zeichen, '%s' bekommen"
 
-#: diff.c:4961
+#: diff.c:4967
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "Ungültiges --color-moved Argument: %s"
 
-#: diff.c:4980
+#: diff.c:4986
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "Ungültiger Modus '%s' in --color-moved-ws"
 
-#: diff.c:5020
+#: diff.c:5026
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3322,152 +3363,152 @@
 "Option diff-algorithm akzeptiert: \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 
-#: diff.c:5056 diff.c:5076
+#: diff.c:5062 diff.c:5082
 #, c-format
 msgid "invalid argument to %s"
 msgstr "Ungültiges Argument für %s"
 
-#: diff.c:5214
+#: diff.c:5219
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "Fehler beim Parsen des --submodule Optionsparameters: '%s'"
 
-#: diff.c:5270
+#: diff.c:5275
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "Ungültiges --word-diff Argument: %s"
 
-#: diff.c:5293
+#: diff.c:5298
 msgid "Diff output format options"
 msgstr "Diff-Optionen zu Ausgabeformaten"
 
-#: diff.c:5295 diff.c:5301
+#: diff.c:5300 diff.c:5306
 msgid "generate patch"
 msgstr "Erzeuge Patch"
 
-#: diff.c:5298 builtin/log.c:177
+#: diff.c:5303 builtin/log.c:177
 msgid "suppress diff output"
 msgstr "Ausgabe der Unterschiede unterdrücken"
 
-#: diff.c:5303 diff.c:5417 diff.c:5424
+#: diff.c:5308 diff.c:5422 diff.c:5429
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5304 diff.c:5307
+#: diff.c:5309 diff.c:5312
 msgid "generate diffs with <n> lines context"
 msgstr "Erstelle Unterschiede mit <n> Zeilen des Kontextes"
 
-#: diff.c:5309
+#: diff.c:5314
 msgid "generate the diff in raw format"
 msgstr "Erstelle Unterschiede im Rohformat"
 
-#: diff.c:5312
+#: diff.c:5317
 msgid "synonym for '-p --raw'"
 msgstr "Synonym für '-p --raw'"
 
-#: diff.c:5316
+#: diff.c:5321
 msgid "synonym for '-p --stat'"
 msgstr "Synonym für '-p --stat'"
 
-#: diff.c:5320
+#: diff.c:5325
 msgid "machine friendly --stat"
 msgstr "maschinenlesbare Ausgabe von --stat"
 
-#: diff.c:5323
+#: diff.c:5328
 msgid "output only the last line of --stat"
 msgstr "nur die letzte Zeile von --stat ausgeben"
 
-#: diff.c:5325 diff.c:5333
+#: diff.c:5330 diff.c:5338
 msgid "<param1,param2>..."
 msgstr "<Parameter1,Parameter2>..."
 
-#: diff.c:5326
+#: diff.c:5331
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 "Gebe die Verteilung des relativen Umfangs der Änderungen für jedes "
 "Unterverzeichnis aus"
 
-#: diff.c:5330
+#: diff.c:5335
 msgid "synonym for --dirstat=cumulative"
 msgstr "Synonym für --dirstat=cumulative"
 
-#: diff.c:5334
+#: diff.c:5339
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "Synonym für --dirstat=files,Parameter1,Parameter2..."
 
-#: diff.c:5338
+#: diff.c:5343
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "Warnen, wenn Änderungen Konfliktmarker oder Whitespace-Fehler einbringen"
 
-#: diff.c:5341
+#: diff.c:5346
 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:5344
+#: diff.c:5349
 msgid "show only names of changed files"
 msgstr "nur Dateinamen der geänderten Dateien anzeigen"
 
-#: diff.c:5347
+#: diff.c:5352
 msgid "show only names and status of changed files"
 msgstr "nur Dateinamen und Status der geänderten Dateien anzeigen"
 
-#: diff.c:5349
+#: diff.c:5354
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<Breite>[,<Namens-Breite>[,<Anzahl>]]"
 
-#: diff.c:5350
+#: diff.c:5355
 msgid "generate diffstat"
 msgstr "Generiere Zusammenfassung der Unterschiede"
 
-#: diff.c:5352 diff.c:5355 diff.c:5358
+#: diff.c:5357 diff.c:5360 diff.c:5363
 msgid "<width>"
 msgstr "<Breite>"
 
-#: diff.c:5353
+#: diff.c:5358
 msgid "generate diffstat with a given width"
 msgstr "Erzeuge Zusammenfassung der Unterschiede mit gegebener Breite"
 
-#: diff.c:5356
+#: diff.c:5361
 msgid "generate diffstat with a given name width"
 msgstr "Erzeuge Zusammenfassung der Unterschiede mit gegebener Namens-Breite"
 
-#: diff.c:5359
+#: diff.c:5364
 msgid "generate diffstat with a given graph width"
 msgstr "Erzeuge Zusammenfassung der Unterschiede mit gegebener Graph-Breite"
 
-#: diff.c:5361
+#: diff.c:5366
 msgid "<count>"
 msgstr "<Anzahl>"
 
-#: diff.c:5362
+#: diff.c:5367
 msgid "generate diffstat with limited lines"
 msgstr "Erzeuge Zusammenfassung der Unterschiede mit begrenzten Zeilen"
 
-#: diff.c:5365
+#: diff.c:5370
 msgid "generate compact summary in diffstat"
 msgstr "Erzeuge kompakte Zusammenstellung in Zusammenfassung der Unterschiede"
 
-#: diff.c:5368
+#: diff.c:5373
 msgid "output a binary diff that can be applied"
 msgstr "Gebe eine binäre Differenz aus, dass angewendet werden kann"
 
-#: diff.c:5371
+#: diff.c:5376
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr "Zeige vollständige Objekt-Namen in den \"index\"-Zeilen"
 
-#: diff.c:5373
+#: diff.c:5378
 msgid "show colored diff"
 msgstr "Zeige farbige Unterschiede"
 
-#: diff.c:5374
+#: diff.c:5379
 msgid "<kind>"
 msgstr "<Art>"
 
-#: diff.c:5375
+#: diff.c:5380
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3475,7 +3516,7 @@
 "Hebe Whitespace-Fehler in den Zeilen 'context', 'old' oder 'new' bei den "
 "Unterschieden hervor"
 
-#: diff.c:5378
+#: diff.c:5383
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3483,91 +3524,91 @@
 "Verschleiere nicht die Pfadnamen und nutze NUL-Zeichen als Schlusszeichen in "
 "Ausgabefeldern bei --raw oder --numstat"
 
-#: diff.c:5381 diff.c:5384 diff.c:5387 diff.c:5493
+#: diff.c:5386 diff.c:5389 diff.c:5392 diff.c:5498
 msgid "<prefix>"
 msgstr "<Präfix>"
 
-#: diff.c:5382
+#: diff.c:5387
 msgid "show the given source prefix instead of \"a/\""
 msgstr "Zeige den gegebenen Quell-Präfix statt \"a/\""
 
-#: diff.c:5385
+#: diff.c:5390
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "Zeige den gegebenen Ziel-Präfix statt \"b/\""
 
-#: diff.c:5388
+#: diff.c:5393
 msgid "prepend an additional prefix to every line of output"
 msgstr "Stelle einen zusätzlichen Präfix bei jeder Ausgabezeile voran"
 
-#: diff.c:5391
+#: diff.c:5396
 msgid "do not show any source or destination prefix"
 msgstr "Zeige keine Quell- oder Ziel-Präfixe an"
 
-#: diff.c:5394
+#: diff.c:5399
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 "Zeige Kontext zwischen Unterschied-Blöcken bis zur angegebenen Anzahl von "
 "Zeilen."
 
-#: diff.c:5398 diff.c:5403 diff.c:5408
+#: diff.c:5403 diff.c:5408 diff.c:5413
 msgid "<char>"
 msgstr "<Zeichen>"
 
-#: diff.c:5399
+#: diff.c:5404
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "Das Zeichen festlegen, das eine neue Zeile kennzeichnet (statt '+')"
 
-#: diff.c:5404
+#: diff.c:5409
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "Das Zeichen festlegen, das eine alte Zeile kennzeichnet (statt '-')"
 
-#: diff.c:5409
+#: diff.c:5414
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "Das Zeichen festlegen, das den Kontext kennzeichnet (statt ' ')"
 
-#: diff.c:5412
+#: diff.c:5417
 msgid "Diff rename options"
 msgstr "Diff-Optionen zur Umbenennung"
 
-#: diff.c:5413
+#: diff.c:5418
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5414
+#: diff.c:5419
 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:5418
+#: diff.c:5423
 msgid "detect renames"
 msgstr "Umbenennungen erkennen"
 
-#: diff.c:5422
+#: diff.c:5427
 msgid "omit the preimage for deletes"
 msgstr "Preimage für Löschungen weglassen."
 
-#: diff.c:5425
+#: diff.c:5430
 msgid "detect copies"
 msgstr "Kopien erkennen"
 
-#: diff.c:5429
+#: diff.c:5434
 msgid "use unmodified files as source to find copies"
 msgstr "Nutze ungeänderte Dateien als Quelle zum Finden von Kopien"
 
-#: diff.c:5431
+#: diff.c:5436
 msgid "disable rename detection"
 msgstr "Erkennung von Umbenennungen deaktivieren"
 
-#: diff.c:5434
+#: diff.c:5439
 msgid "use empty blobs as rename source"
 msgstr "Nutze leere Blobs als Quelle von Umbennungen"
 
-#: diff.c:5436
+#: diff.c:5441
 msgid "continue listing the history of a file beyond renames"
 msgstr "Fortführen der Auflistung der Historie einer Datei nach Umbennung"
 
-#: diff.c:5439
+#: diff.c:5444
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3575,159 +3616,159 @@
 "Verhindere die Erkennung von Umbennungen und Kopien, wenn die Anzahl der "
 "Ziele für Umbennungen und Kopien das gegebene Limit überschreitet"
 
-#: diff.c:5441
+#: diff.c:5446
 msgid "Diff algorithm options"
 msgstr "Diff Algorithmus-Optionen"
 
-#: diff.c:5443
+#: diff.c:5448
 msgid "produce the smallest possible diff"
 msgstr "Erzeuge die kleinstmöglichen Änderungen"
 
-#: diff.c:5446
+#: diff.c:5451
 msgid "ignore whitespace when comparing lines"
 msgstr "Whitespace-Änderungen beim Vergleich von Zeilen ignorieren"
 
-#: diff.c:5449
+#: diff.c:5454
 msgid "ignore changes in amount of whitespace"
 msgstr "Änderungen bei der Anzahl von Whitespace ignorieren"
 
-#: diff.c:5452
+#: diff.c:5457
 msgid "ignore changes in whitespace at EOL"
 msgstr "Whitespace-Änderungen am Zeilenende ignorieren"
 
-#: diff.c:5455
+#: diff.c:5460
 msgid "ignore carrier-return at the end of line"
 msgstr "Ignoriere den Zeilenumbruch am Ende der Zeile"
 
-#: diff.c:5458
+#: diff.c:5463
 msgid "ignore changes whose lines are all blank"
 msgstr "Ignoriere Änderungen in leeren Zeilen"
 
-#: diff.c:5461
+#: diff.c:5466
 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:5464
+#: diff.c:5469
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "Erzeuge Änderungen durch Nutzung des Algorithmus \"Patience Diff\""
 
-#: diff.c:5468
+#: diff.c:5473
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "Erzeuge Änderungen durch Nutzung des Algorithmus \"Histogram Diff\""
 
-#: diff.c:5470
+#: diff.c:5475
 msgid "<algorithm>"
 msgstr "<Algorithmus>"
 
-#: diff.c:5471
+#: diff.c:5476
 msgid "choose a diff algorithm"
 msgstr "Ein Algorithmus für Änderungen wählen"
 
-#: diff.c:5473
+#: diff.c:5478
 msgid "<text>"
 msgstr "<Text>"
 
-#: diff.c:5474
+#: diff.c:5479
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "Erzeuge Änderungen durch Nutzung des Algorithmus \"Anchored Diff\""
 
-#: diff.c:5476 diff.c:5485 diff.c:5488
+#: diff.c:5481 diff.c:5490 diff.c:5493
 msgid "<mode>"
 msgstr "<Modus>"
 
-#: diff.c:5477
+#: diff.c:5482
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr "Zeige Wort-Änderungen, nutze <Modus>, um Wörter abzugrenzen"
 
-#: diff.c:5479 diff.c:5482 diff.c:5527
+#: diff.c:5484 diff.c:5487 diff.c:5532
 msgid "<regex>"
 msgstr "<Regex>"
 
-#: diff.c:5480
+#: diff.c:5485
 msgid "use <regex> to decide what a word is"
 msgstr "Nutze <Regex>, um zu entscheiden, was ein Wort ist"
 
-#: diff.c:5483
+#: diff.c:5488
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "Entsprechend wie --word-diff=color --word-diff-regex=<Regex>"
 
-#: diff.c:5486
+#: diff.c:5491
 msgid "moved lines of code are colored differently"
 msgstr "Verschobene Codezeilen sind andersfarbig"
 
-#: diff.c:5489
+#: diff.c:5494
 msgid "how white spaces are ignored in --color-moved"
 msgstr "Wie Whitespaces in --color-moved ignoriert werden"
 
-#: diff.c:5492
+#: diff.c:5497
 msgid "Other diff options"
 msgstr "Andere Diff-Optionen"
 
-#: diff.c:5494
+#: diff.c:5499
 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:5498
+#: diff.c:5503
 msgid "treat all files as text"
 msgstr "alle Dateien als Text behandeln"
 
-#: diff.c:5500
+#: diff.c:5505
 msgid "swap two inputs, reverse the diff"
 msgstr "Vertausche die beiden Eingaben und drehe die Änderungen um"
 
-#: diff.c:5502
+#: diff.c:5507
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr ""
 "Beende mit Exit-Status 1, wenn Änderungen vorhanden sind, andernfalls mit 0"
 
-#: diff.c:5504
+#: diff.c:5509
 msgid "disable all output of the program"
 msgstr "Keine Ausgaben vom Programm"
 
-#: diff.c:5506
+#: diff.c:5511
 msgid "allow an external diff helper to be executed"
 msgstr "Erlaube die Ausführung eines externes Programms für Änderungen"
 
-#: diff.c:5508
+#: diff.c:5513
 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:5510
+#: diff.c:5515
 msgid "<when>"
 msgstr "<wann>"
 
-#: diff.c:5511
+#: diff.c:5516
 msgid "ignore changes to submodules in the diff generation"
 msgstr ""
 "Änderungen in Submodulen während der Erstellung der Unterschiede ignorieren"
 
-#: diff.c:5514
+#: diff.c:5519
 msgid "<format>"
 msgstr "<Format>"
 
-#: diff.c:5515
+#: diff.c:5520
 msgid "specify how differences in submodules are shown"
 msgstr "Angeben, wie Unterschiede in Submodulen gezeigt werden"
 
-#: diff.c:5519
+#: diff.c:5524
 msgid "hide 'git add -N' entries from the index"
 msgstr "verstecke 'git add -N' Einträge vom Index"
 
-#: diff.c:5522
+#: diff.c:5527
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "Behandle 'git add -N' Einträge im Index als echt"
 
-#: diff.c:5524
+#: diff.c:5529
 msgid "<string>"
 msgstr "<Zeichenkette>"
 
-#: diff.c:5525
+#: diff.c:5530
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
@@ -3735,7 +3776,7 @@
 "Suche nach Unterschieden, welche die Anzahl des Vorkommens der angegebenen "
 "Zeichenkette verändern"
 
-#: diff.c:5528
+#: diff.c:5533
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3743,25 +3784,25 @@
 "Suche nach Unterschieden, welche die Anzahl des Vorkommens des angegebenen "
 "regulären Ausdrucks verändern"
 
-#: diff.c:5531
+#: diff.c:5536
 msgid "show all changes in the changeset with -S or -G"
 msgstr "zeige alle Änderungen im Changeset mit -S oder -G"
 
-#: diff.c:5534
+#: diff.c:5539
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr ""
 "behandle <Zeichenkette> bei -S als erweiterten POSIX regulären Ausdruck"
 
-#: diff.c:5537
+#: diff.c:5542
 msgid "control the order in which files appear in the output"
 msgstr ""
 "kontrolliere die Reihenfolge, in der die Dateien in der Ausgabe erscheinen"
 
-#: diff.c:5538
+#: diff.c:5543
 msgid "<object-id>"
 msgstr "<Objekt-ID>"
 
-#: diff.c:5539
+#: diff.c:5544
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
@@ -3769,33 +3810,33 @@
 "Suche nach Unterschieden, welche die Anzahl des Vorkommens des angegebenen "
 "Objektes verändern"
 
-#: diff.c:5541
+#: diff.c:5546
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5542
+#: diff.c:5547
 msgid "select files by diff type"
 msgstr "Wähle Dateien anhand der Art der Änderung"
 
-#: diff.c:5544
+#: diff.c:5549
 msgid "<file>"
 msgstr "<Datei>"
 
-#: diff.c:5545
+#: diff.c:5550
 msgid "Output to a specific file"
 msgstr "Ausgabe zu einer bestimmten Datei"
 
-#: diff.c:6200
+#: diff.c:6205
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 "Ungenaue Erkennung für Umbenennungen wurde aufgrund zu vieler Dateien\n"
 "übersprungen."
 
-#: diff.c:6203
+#: diff.c:6208
 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:6206
+#: diff.c:6211
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3812,64 +3853,64 @@
 msgid "Performing inexact rename detection"
 msgstr "Führe Erkennung für ungenaue Umbenennung aus"
 
-#: dir.c:555
+#: dir.c:573
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr ""
 "Pfadspezifikation '%s' stimmt mit keinen git-bekannten Dateien überein."
 
-#: dir.c:695 dir.c:724 dir.c:737
+#: dir.c:713 dir.c:742 dir.c:755
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "Unbekanntes Muster: '%s'"
 
-#: dir.c:754 dir.c:768
+#: dir.c:772 dir.c:786
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "Unbekanntes verneinendes Muster: '%s'"
 
-#: dir.c:786
+#: dir.c:804
 #, 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:796
+#: dir.c:814
 msgid "disabling cone pattern matching"
 msgstr "Deaktiviere Cone-Muster-Übereinstimmung"
 
-#: dir.c:1173
+#: dir.c:1191
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "Kann %s nicht als exclude-Filter benutzen."
 
-#: dir.c:2275
+#: dir.c:2296
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "Konnte Verzeichnis '%s' nicht öffnen."
 
-#: dir.c:2575
+#: dir.c:2596
 msgid "failed to get kernel name and information"
 msgstr "Fehler beim Sammeln von Namen und Informationen zum Kernel"
 
-#: dir.c:2699
+#: dir.c:2720
 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:3481
+#: dir.c:3502
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "Index-Datei in Repository %s beschädigt."
 
-#: dir.c:3526 dir.c:3531
+#: dir.c:3547 dir.c:3552
 #, c-format
 msgid "could not create directories for %s"
 msgstr "Konnte Verzeichnisse für '%s' nicht erstellen."
 
-#: dir.c:3560
+#: dir.c:3581
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "Konnte Git-Verzeichnis nicht von '%s' nach '%s' migrieren."
@@ -3879,11 +3920,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:178
+#: entry.c:177
 msgid "Filtering content"
 msgstr "Filtere Inhalt"
 
-#: entry.c:479
+#: entry.c:478
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "Konnte Datei '%s' nicht lesen."
@@ -3903,227 +3944,245 @@
 msgid "too many args to run %s"
 msgstr "Zu viele Argumente angegeben, um %s auszuführen."
 
-#: fetch-pack.c:151
+#: fetch-pack.c:152
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: erwartete shallow-Liste"
 
-#: fetch-pack.c:154
+#: fetch-pack.c:155
 msgid "git fetch-pack: expected a flush packet after shallow list"
 msgstr "git fetch-pack: erwartete ein Flush-Paket nach der shallow-Liste"
 
-#: fetch-pack.c:165
+#: fetch-pack.c:166
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack: ACK/NAK erwartet, Flush-Paket bekommen"
 
-#: fetch-pack.c:185
+#: fetch-pack.c:186
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack: ACK/NAK erwartet, '%s' bekommen"
 
-#: fetch-pack.c:196
+#: fetch-pack.c:197
 msgid "unable to write to remote"
 msgstr "konnte nicht zum Remote schreiben"
 
-#: fetch-pack.c:258
+#: fetch-pack.c:259
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc benötigt multi_ack_detailed"
 
-#: fetch-pack.c:357 fetch-pack.c:1364
+#: fetch-pack.c:358 fetch-pack.c:1408
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "Ungültige shallow-Zeile: %s"
 
-#: fetch-pack.c:363 fetch-pack.c:1370
+#: fetch-pack.c:364 fetch-pack.c:1414
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "Ungültige unshallow-Zeile: %s"
 
-#: fetch-pack.c:365 fetch-pack.c:1372
+#: fetch-pack.c:366 fetch-pack.c:1416
 #, c-format
 msgid "object not found: %s"
 msgstr "Objekt nicht gefunden: %s"
 
-#: fetch-pack.c:368 fetch-pack.c:1375
+#: fetch-pack.c:369 fetch-pack.c:1419
 #, c-format
 msgid "error in object: %s"
 msgstr "Fehler in Objekt: %s"
 
-#: fetch-pack.c:370 fetch-pack.c:1377
+#: fetch-pack.c:371 fetch-pack.c:1421
 #, c-format
 msgid "no shallow found: %s"
 msgstr "Kein shallow-Objekt gefunden: %s"
 
-#: fetch-pack.c:373 fetch-pack.c:1381
+#: fetch-pack.c:374 fetch-pack.c:1425
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "shallow/unshallow erwartet, %s bekommen"
 
-#: fetch-pack.c:415
+#: fetch-pack.c:416
 #, c-format
 msgid "got %s %d %s"
 msgstr "%s %d %s bekommen"
 
-#: fetch-pack.c:432
+#: fetch-pack.c:433
 #, c-format
 msgid "invalid commit %s"
 msgstr "Ungültiger Commit %s"
 
-#: fetch-pack.c:463
+#: fetch-pack.c:464
 msgid "giving up"
 msgstr "Gebe auf"
 
-#: fetch-pack.c:476 progress.c:336
+#: fetch-pack.c:477 progress.c:336
 msgid "done"
 msgstr "Fertig"
 
-#: fetch-pack.c:488
+#: fetch-pack.c:489
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "%s (%d) %s bekommen"
 
-#: fetch-pack.c:534
+#: fetch-pack.c:535
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Markiere %s als vollständig"
 
-#: fetch-pack.c:755
+#: fetch-pack.c:756
 #, c-format
 msgid "already have %s (%s)"
 msgstr "habe %s (%s) bereits"
 
-#: fetch-pack.c:819
+#: fetch-pack.c:821
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: Fehler beim Starten des sideband demultiplexer"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:829
 msgid "protocol error: bad pack header"
 msgstr "Protokollfehler: ungültiger Pack-Header"
 
-#: fetch-pack.c:901
+#: fetch-pack.c:910
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: konnte %s nicht starten"
 
-#: fetch-pack.c:917
+#: fetch-pack.c:927
 #, c-format
 msgid "%s failed"
 msgstr "%s fehlgeschlagen"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:929
 msgid "error in sideband demultiplexer"
 msgstr "Fehler in sideband demultiplexer"
 
-#: fetch-pack.c:966
+#: fetch-pack.c:976
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Server-Version ist %.*s"
 
-#: fetch-pack.c:971 fetch-pack.c:977 fetch-pack.c:980 fetch-pack.c:986
-#: fetch-pack.c:990 fetch-pack.c:994 fetch-pack.c:998 fetch-pack.c:1002
-#: fetch-pack.c:1006 fetch-pack.c:1010 fetch-pack.c:1014 fetch-pack.c:1018
-#: fetch-pack.c:1024 fetch-pack.c:1030 fetch-pack.c:1035 fetch-pack.c:1040
+#: fetch-pack.c:981 fetch-pack.c:987 fetch-pack.c:990 fetch-pack.c:996
+#: fetch-pack.c:1000 fetch-pack.c:1004 fetch-pack.c:1008 fetch-pack.c:1012
+#: fetch-pack.c:1016 fetch-pack.c:1020 fetch-pack.c:1024 fetch-pack.c:1028
+#: fetch-pack.c:1034 fetch-pack.c:1040 fetch-pack.c:1045 fetch-pack.c:1050
 #, c-format
 msgid "Server supports %s"
 msgstr "Server unterstützt %s"
 
-#: fetch-pack.c:973
+#: fetch-pack.c:983
 msgid "Server does not support shallow clients"
 msgstr "Server unterstützt keine shallow-Clients"
 
-#: fetch-pack.c:1033
+#: fetch-pack.c:1043
 msgid "Server does not support --shallow-since"
 msgstr "Server unterstützt kein --shallow-since"
 
-#: fetch-pack.c:1038
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-exclude"
 msgstr "Server unterstützt kein --shallow-exclude"
 
-#: fetch-pack.c:1042
+#: fetch-pack.c:1052
 msgid "Server does not support --deepen"
 msgstr "Server unterstützt kein --deepen"
 
-#: fetch-pack.c:1059
+#: fetch-pack.c:1054
+msgid "Server does not support this repository's object format"
+msgstr "Server unterstützt das Objekt-Format dieses Repositories nicht"
+
+#: fetch-pack.c:1071
 msgid "no common commits"
 msgstr "keine gemeinsamen Commits"
 
-#: fetch-pack.c:1071 fetch-pack.c:1563
+#: fetch-pack.c:1083 fetch-pack.c:1639
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: Abholen fehlgeschlagen."
 
 #: fetch-pack.c:1211
-msgid "Server does not support shallow requests"
-msgstr "Server unterstützt keine shallow-Anfragen."
+#, c-format
+msgid "mismatched algorithms: client %s; server %s"
+msgstr "Algorithmen stimmen nicht überein: Client %s; Server %s"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1215
+#, c-format
+msgid "the server does not support algorithm '%s'"
+msgstr "der Server unterstützt Algorithmus '%s' nicht"
+
+#: fetch-pack.c:1235
+msgid "Server does not support shallow requests"
+msgstr "Server unterstützt keine shallow-Anfragen"
+
+#: fetch-pack.c:1242
 msgid "Server supports filter"
 msgstr "Server unterstützt Filter"
 
-#: fetch-pack.c:1242
+#: fetch-pack.c:1286
 msgid "unable to write request to remote"
 msgstr "konnte Anfrage nicht zum Remote schreiben"
 
-#: fetch-pack.c:1260
+#: fetch-pack.c:1304
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "Fehler beim Lesen von Sektionskopf '%s'."
 
-#: fetch-pack.c:1266
+#: fetch-pack.c:1310
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "'%s' erwartet, '%s' empfangen"
 
-#: fetch-pack.c:1327
+#: fetch-pack.c:1371
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "Unerwartete Acknowledgment-Zeile: '%s'"
 
-#: fetch-pack.c:1332
+#: fetch-pack.c:1376
 #, c-format
 msgid "error processing acks: %d"
 msgstr "Fehler beim Verarbeiten von ACKS: %d"
 
-#: fetch-pack.c:1342
+#: fetch-pack.c:1386
 msgid "expected packfile to be sent after 'ready'"
 msgstr "Erwartete Versand einer Packdatei nach 'ready'."
 
-#: fetch-pack.c:1344
+#: fetch-pack.c:1388
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "Erwartete keinen Versand einer anderen Sektion ohne 'ready'."
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1430
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "Fehler beim Verarbeiten von Shallow-Informationen: %d"
 
-#: fetch-pack.c:1433
+#: fetch-pack.c:1477
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "wanted-ref erwartet, '%s' bekommen"
 
-#: fetch-pack.c:1438
+#: fetch-pack.c:1482
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
-msgstr "Unerwartetes wanted-ref: '%s'"
+msgstr "unerwartetes wanted-ref: '%s'"
 
-#: fetch-pack.c:1443
+#: fetch-pack.c:1487
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "Fehler beim Verarbeiten von wanted-refs: %d"
 
-#: fetch-pack.c:1789
+#: fetch-pack.c:1517
+msgid "git fetch-pack: expected response end packet"
+msgstr "git fetch-pack: Antwort-Endpaket erwartet"
+
+#: fetch-pack.c:1921
 msgid "no matching remote head"
 msgstr "kein übereinstimmender Remote-Branch"
 
-#: fetch-pack.c:1812 builtin/clone.c:692
+#: fetch-pack.c:1944 builtin/clone.c:692
 msgid "remote did not send all necessary objects"
-msgstr "Remote-Repository hat nicht alle erforderlichen Objekte gesendet."
+msgstr "Remote-Repository hat nicht alle erforderlichen Objekte gesendet"
 
-#: fetch-pack.c:1839
+#: fetch-pack.c:1971
 #, c-format
 msgid "no such remote ref %s"
 msgstr "keine solche Remote-Referenz %s"
 
-#: fetch-pack.c:1842
+#: fetch-pack.c:1974
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Der Server lehnt Anfrage nach nicht angebotenem Objekt %s ab."
@@ -4159,7 +4218,7 @@
 msgid "'%s': unable to read %s"
 msgstr "'%s': konnte %s nicht lesen"
 
-#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:82
+#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:89
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
@@ -4306,16 +4365,16 @@
 "\n"
 "Die ähnlichsten Befehle sind"
 
-#: help.c:653
+#: help.c:654
 msgid "git version [<options>]"
 msgstr "git version [<Optionen>]"
 
-#: help.c:708
+#: help.c:709
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:712
+#: help.c:713
 msgid ""
 "\n"
 "Did you mean this?"
@@ -4412,7 +4471,13 @@
 
 #: list-objects-filter-options.c:226
 msgid "multiple filter-specs cannot be combined"
-msgstr "Mehrere filter-specs können nicht kombiniert werden."
+msgstr "mehrere filter-specs können nicht kombiniert werden"
+
+#: list-objects-filter-options.c:330
+msgid "unable to upgrade repository format to support partial clone"
+msgstr ""
+"Repository-Format konnte nicht erweitert werden, um partielles Klonen zu "
+"unterstützen"
 
 #: list-objects-filter.c:492
 #, c-format
@@ -4422,7 +4487,7 @@
 #: list-objects-filter.c:495
 #, c-format
 msgid "unable to parse sparse filter data in %s"
-msgstr "Konnte partielle Filter-Daten in %s nicht parsen."
+msgstr "konnte partielle Filter-Daten in %s nicht parsen"
 
 #: list-objects.c:127
 #, c-format
@@ -4792,7 +4857,7 @@
 msgid "Skipped %s (merged same as existing)"
 msgstr "%s ausgelassen (Ergebnis des Merges existiert bereits)"
 
-#: merge-recursive.c:3101 git-submodule.sh:985
+#: merge-recursive.c:3101 git-submodule.sh:959
 msgid "submodule"
 msgstr "Submodul"
 
@@ -4921,7 +4986,7 @@
 msgstr "Lesen des Zwischenspeichers fehlgeschlagen"
 
 #: merge.c:108 rerere.c:720 builtin/am.c:1878 builtin/am.c:1912
-#: builtin/checkout.c:559 builtin/checkout.c:824 builtin/clone.c:816
+#: builtin/checkout.c:559 builtin/checkout.c:822 builtin/clone.c:816
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "Konnte neue Index-Datei nicht schreiben."
@@ -5176,21 +5241,21 @@
 msgid "hash mismatch %s"
 msgstr "Hash stimmt nicht mit %s überein."
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2135
+#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2184
 #, c-format
 msgid "unable to get size of %s"
 msgstr "Konnte Größe von %s nicht bestimmen."
 
-#: packfile.c:629
+#: packfile.c:630
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "Offset vor Ende der Packdatei (fehlerhafte Indexdatei?)"
 
-#: packfile.c:1899
+#: packfile.c:1900
 #, 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:1903
+#: packfile.c:1904
 #, 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?)"
@@ -5391,52 +5456,56 @@
 
 #: pkt-line.c:92
 msgid "unable to write flush packet"
-msgstr "Konnte Flush-Paket nicht schreiben."
+msgstr "konnte Flush-Paket nicht schreiben"
 
 #: pkt-line.c:99
 msgid "unable to write delim packet"
-msgstr "Konnte Delim-Paket nicht schreiben."
+msgstr "konnte Delim-Paket nicht schreiben"
 
 #: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "konnte zustandsloses Separator-Paket nicht schreiben"
+
+#: pkt-line.c:113
 msgid "flush packet write failed"
 msgstr "Flush beim Schreiben des Pakets fehlgeschlagen."
 
-#: pkt-line.c:146 pkt-line.c:232
+#: pkt-line.c:153 pkt-line.c:239
 msgid "protocol error: impossibly long line"
 msgstr "Protokollfehler: unmöglich lange Zeile"
 
-#: pkt-line.c:162 pkt-line.c:164
+#: pkt-line.c:169 pkt-line.c:171
 msgid "packet write with format failed"
 msgstr "Schreiben des Pakets mit Format fehlgeschlagen."
 
-#: pkt-line.c:196
+#: pkt-line.c:203
 msgid "packet write failed - data exceeds max packet size"
 msgstr ""
 "Schreiben des Pakets fehlgeschlagen - Daten überschreiten maximale Paketgröße"
 
-#: pkt-line.c:203 pkt-line.c:210
+#: pkt-line.c:210 pkt-line.c:217
 msgid "packet write failed"
 msgstr "Schreiben des Pakets fehlgeschlagen."
 
-#: pkt-line.c:295
+#: pkt-line.c:302
 msgid "read error"
 msgstr "Lesefehler"
 
-#: pkt-line.c:303
+#: pkt-line.c:310
 msgid "the remote end hung up unexpectedly"
 msgstr "Die Gegenseite hat unerwartet abgebrochen."
 
-#: pkt-line.c:331
+#: pkt-line.c:338
 #, c-format
 msgid "protocol error: bad line length character: %.4s"
 msgstr "Protokollfehler: ungültiges Zeichen für Zeilenlänge: %.4s"
 
-#: pkt-line.c:341 pkt-line.c:346
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
 msgid "protocol error: bad line length %d"
 msgstr "Protokollfehler: ungültige Zeilenlänge %d"
 
-#: pkt-line.c:362
+#: pkt-line.c:373
 #, c-format
 msgid "remote error: %s"
 msgstr "Fehler am anderen Ende: %s"
@@ -5617,7 +5686,7 @@
 
 #: read-cache.c:1983 read-cache.c:2271 rerere.c:565 rerere.c:599 rerere.c:1111
 #: submodule.c:1619 builtin/add.c:532 builtin/check-ignore.c:181
-#: builtin/checkout.c:488 builtin/checkout.c:676 builtin/clean.c:961
+#: builtin/checkout.c:488 builtin/checkout.c:674 builtin/clean.c:991
 #: builtin/commit.c:364 builtin/diff-tree.c:121 builtin/grep.c:507
 #: builtin/mv.c:145 builtin/reset.c:247 builtin/rm.c:290
 #: builtin/submodule--helper.c:332
@@ -5674,7 +5743,7 @@
 msgid "broken index, expect %s in %s, got %s"
 msgstr "Fehlerhafter Index. Erwartete %s in %s, erhielt %s."
 
-#: read-cache.c:3026 strbuf.c:1176 wrapper.c:622 builtin/merge.c:1130
+#: read-cache.c:3026 strbuf.c:1171 wrapper.c:630 builtin/merge.c:1130
 #, c-format
 msgid "could not close '%s'"
 msgstr "Konnte '%s' nicht schließen."
@@ -5860,7 +5929,7 @@
 msgid "could not read '%s'."
 msgstr "Konnte '%s' nicht lesen."
 
-#: ref-filter.c:42 wt-status.c:1936
+#: ref-filter.c:42 wt-status.c:1977
 msgid "gone"
 msgstr "entfernt"
 
@@ -6085,7 +6154,7 @@
 msgid "ignoring ref with broken name %s"
 msgstr "Ignoriere Referenz mit fehlerhaftem Namen %s"
 
-#: ref-filter.c:2095 refs.c:625
+#: ref-filter.c:2095 refs.c:657
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "Ignoriere fehlerhafte Referenz %s"
@@ -6098,137 +6167,151 @@
 #: ref-filter.c:2495
 #, c-format
 msgid "option `%s' is incompatible with --merged"
-msgstr "Die Option `%s' ist inkompatibel mit --merged."
+msgstr "die Option `%s' ist inkompatibel mit --merged"
 
 #: ref-filter.c:2498
 #, c-format
 msgid "option `%s' is incompatible with --no-merged"
-msgstr "Die Option `%s' ist inkompatibel mit --no-merged."
+msgstr "die Option `%s' ist inkompatibel mit --no-merged"
 
 #: ref-filter.c:2508
 #, c-format
 msgid "malformed object name %s"
-msgstr "Missgebildeter Objektname %s"
+msgstr "missgebildeter Objektname %s"
 
 #: ref-filter.c:2513
 #, c-format
 msgid "option `%s' must point to a commit"
-msgstr "Die Option `%s' muss auf einen Commit zeigen."
+msgstr "die Option `%s' muss auf einen Commit zeigen"
 
-#: refs.c:262
+#: refs.c:264
 #, c-format
 msgid "%s does not point to a valid object!"
 msgstr "%s zeigt auf kein gültiges Objekt!"
 
-#: refs.c:623
+#: refs.c:572
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr "konnte `%s` nicht abrufen"
+
+#: refs.c:579
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "ungültiger Branchname: %s = %s"
+
+#: refs.c:655
 #, c-format
 msgid "ignoring dangling symref %s"
 msgstr "Ignoriere unreferenzierte symbolische Referenz %s"
 
-#: refs.c:760
+#: refs.c:792
 #, c-format
 msgid "could not open '%s' for writing: %s"
 msgstr "Konnte '%s' nicht zum Schreiben öffnen: %s"
 
-#: refs.c:770 refs.c:821
+#: refs.c:802 refs.c:853
 #, c-format
 msgid "could not read ref '%s'"
 msgstr "Konnte Referenz '%s' nicht lesen."
 
-#: refs.c:776
+#: refs.c:808
 #, c-format
 msgid "ref '%s' already exists"
 msgstr "Referenz '%s' existiert bereits."
 
-#: refs.c:781
+#: refs.c:813
 #, c-format
 msgid "unexpected object ID when writing '%s'"
 msgstr "Unerwartete Objekt-ID beim Schreiben von '%s'."
 
-#: refs.c:789 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
-#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1173
-#: wrapper.c:620
+#: refs.c:821 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
+#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1168
+#: wrapper.c:628
 #, c-format
 msgid "could not write to '%s'"
 msgstr "Konnte nicht nach '%s' schreiben."
 
-#: refs.c:816 strbuf.c:1171 wrapper.c:188 wrapper.c:358 builtin/am.c:719
+#: refs.c:848 strbuf.c:1166 wrapper.c:196 wrapper.c:366 builtin/am.c:719
 #: builtin/rebase.c:852
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "Konnte '%s' nicht zum Schreiben öffnen."
 
-#: refs.c:823
+#: refs.c:855
 #, c-format
 msgid "unexpected object ID when deleting '%s'"
 msgstr "Unerwartete Objekt-ID beim Löschen von '%s'."
 
-#: refs.c:954
+#: refs.c:986
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr "Log für Referenz %s hat eine Lücke nach %s."
 
-#: refs.c:960
+#: refs.c:992
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr "Log für Referenz %s unerwartet bei %s beendet."
 
-#: refs.c:1019
+#: refs.c:1051
 #, c-format
 msgid "log for %s is empty"
 msgstr "Log für %s ist leer."
 
-#: refs.c:1111
+#: refs.c:1143
 #, c-format
 msgid "refusing to update ref with bad name '%s'"
-msgstr "Verweigere Aktualisierung einer Referenz mit fehlerhaftem Namen '%s'."
+msgstr "verweigere Aktualisierung einer Referenz mit fehlerhaftem Namen '%s'"
 
-#: refs.c:1187
+#: refs.c:1219
 #, c-format
 msgid "update_ref failed for ref '%s': %s"
 msgstr "update_ref für Referenz '%s' fehlgeschlagen: %s"
 
-#: refs.c:1979
+#: refs.c:2011
 #, c-format
 msgid "multiple updates for ref '%s' not allowed"
-msgstr "Mehrere Aktualisierungen für Referenz '%s' nicht erlaubt."
+msgstr "mehrere Aktualisierungen für Referenz '%s' nicht erlaubt"
 
-#: refs.c:2011
+#: refs.c:2098
 msgid "ref updates forbidden inside quarantine environment"
 msgstr ""
 "Aktualisierungen von Referenzen ist innerhalb der Quarantäne-Umgebung "
-"verboten."
+"verboten"
 
-#: refs.c:2107 refs.c:2137
+#: refs.c:2109
+msgid "ref updates aborted by hook"
+msgstr "Aktualisierungen von Referenzen durch Hook abgebrochen"
+
+#: refs.c:2209 refs.c:2239
 #, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr "'%s' existiert; kann '%s' nicht erstellen"
 
-#: refs.c:2113 refs.c:2148
+#: refs.c:2215 refs.c:2250
 #, c-format
 msgid "cannot process '%s' and '%s' at the same time"
-msgstr "Kann '%s' und '%s' nicht zur selben Zeit verarbeiten."
+msgstr "kann '%s' und '%s' nicht zur selben Zeit verarbeiten"
 
 #: refs/files-backend.c:1233
 #, c-format
 msgid "could not remove reference %s"
-msgstr "Konnte Referenz %s nicht löschen"
+msgstr "konnte Referenz %s nicht löschen"
 
 #: refs/files-backend.c:1247 refs/packed-backend.c:1541
 #: refs/packed-backend.c:1551
 #, c-format
 msgid "could not delete reference %s: %s"
-msgstr "Konnte Referenz %s nicht entfernen: %s"
+msgstr "konnte Referenz %s nicht entfernen: %s"
 
 #: refs/files-backend.c:1250 refs/packed-backend.c:1554
 #, c-format
 msgid "could not delete references: %s"
-msgstr "Konnte Referenzen nicht entfernen: %s"
+msgstr "konnte Referenzen nicht entfernen: %s"
 
 #: refspec.c:137
 #, c-format
 msgid "invalid refspec '%s'"
-msgstr "Ungültige Refspec '%s'"
+msgstr "ungültige Refspec '%s'"
 
 #: remote.c:355
 #, c-format
@@ -6501,7 +6584,7 @@
 "  (benutzen Sie \"git pull\", um Ihren Branch mit dem Remote-Branch "
 "zusammenzuführen)\n"
 
-#: remote.c:2233
+#: remote.c:2241
 #, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr "Kann erwarteten Objektnamen '%s' nicht parsen."
@@ -6628,20 +6711,20 @@
 msgid "failed to find tree of %s"
 msgstr "Fehler beim Finden des \"Tree\"-Objektes von %s."
 
-#: revision.c:2655
+#: revision.c:2661
 msgid "your current branch appears to be broken"
 msgstr "Ihr aktueller Branch scheint fehlerhaft zu sein."
 
-#: revision.c:2658
+#: revision.c:2664
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "Ihr aktueller Branch '%s' hat noch keine Commits."
 
-#: revision.c:2866
+#: revision.c:2873
 msgid "--first-parent is incompatible with --bisect"
 msgstr "Die Optionen --first-parent und --bisect sind inkompatibel."
 
-#: revision.c:2870
+#: revision.c:2877
 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"
 
@@ -6682,12 +6765,17 @@
 msgid "failed to sign the push certificate"
 msgstr "Fehler beim Signieren des \"push\"-Zertifikates"
 
-#: send-pack.c:399
+#: send-pack.c:394
+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:403
 msgid "the receiving end does not support --signed push"
 msgstr ""
 "die Gegenseite unterstützt keinen signierten Versand (\"--signed push\")"
 
-#: send-pack.c:401
+#: send-pack.c:405
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -6695,11 +6783,11 @@
 "kein Versand des \"push\"-Zertifikates, da die Gegenseite keinen signierten\n"
 "Versand (\"--signed push\") unterstützt"
 
-#: send-pack.c:413
+#: send-pack.c:417
 msgid "the receiving end does not support --atomic push"
 msgstr "die Gegenseite unterstützt keinen atomaren Versand (\"--atomic push\")"
 
-#: send-pack.c:418
+#: send-pack.c:422
 msgid "the receiving end does not support push options"
 msgstr "die Gegenseite unterstützt keine Push-Optionen"
 
@@ -6821,7 +6909,7 @@
 msgid "unable to dequote value of '%s'"
 msgstr "Konnte Anführungszeichen von '%s' nicht entfernen."
 
-#: sequencer.c:785 wrapper.c:190 wrapper.c:360 builtin/am.c:710
+#: sequencer.c:785 wrapper.c:198 wrapper.c:368 builtin/am.c:710
 #: builtin/am.c:802 builtin/merge.c:1125 builtin/rebase.c:896
 #, c-format
 msgid "could not open '%s' for reading"
@@ -7672,84 +7760,84 @@
 msgid "this operation must be run in a work tree"
 msgstr "Diese Operation muss in einem Arbeitsverzeichnis ausgeführt werden."
 
-#: setup.c:569
+#: setup.c:604
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Erwartete Git-Repository-Version <= %d, %d gefunden"
 
-#: setup.c:577
+#: setup.c:612
 msgid "unknown repository extensions found:"
 msgstr "Unbekannte Repository-Erweiterungen gefunden:"
 
-#: setup.c:596
+#: setup.c:631
 #, c-format
 msgid "error opening '%s'"
 msgstr "Fehler beim Öffnen von '%s'."
 
-#: setup.c:598
+#: setup.c:633
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "Zu groß, um eine .git-Datei zu sein: '%s'"
 
-#: setup.c:600
+#: setup.c:635
 #, c-format
 msgid "error reading %s"
 msgstr "Fehler beim Lesen von '%s'."
 
-#: setup.c:602
+#: setup.c:637
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "Ungültiges gitfile-Format: %s"
 
-#: setup.c:604
+#: setup.c:639
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "Kein Pfad in gitfile: %s"
 
-#: setup.c:606
+#: setup.c:641
 #, c-format
 msgid "not a git repository: %s"
 msgstr "Kein Git-Repository: %s"
 
-#: setup.c:708
+#: setup.c:743
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' zu groß"
 
-#: setup.c:722
+#: setup.c:757
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "Kein Git-Repository: '%s'"
 
-#: setup.c:751 setup.c:753 setup.c:784
+#: setup.c:786 setup.c:788 setup.c:819
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "Kann nicht in Verzeichnis '%s' wechseln."
 
-#: setup.c:756 setup.c:812 setup.c:822 setup.c:861 setup.c:869
+#: setup.c:791 setup.c:847 setup.c:857 setup.c:896 setup.c:904
 msgid "cannot come back to cwd"
 msgstr "Kann nicht zum aktuellen Arbeitsverzeichnis zurückwechseln."
 
-#: setup.c:883
+#: setup.c:918
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "Konnte '%*s%s%s' nicht lesen."
 
-#: setup.c:1121
+#: setup.c:1156
 msgid "Unable to read current working directory"
 msgstr "Konnte aktuelles Arbeitsverzeichnis nicht lesen."
 
-#: setup.c:1130 setup.c:1136
+#: setup.c:1165 setup.c:1171
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "Kann nicht nach '%s' wechseln."
 
-#: setup.c:1141
+#: setup.c:1176
 #, 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:1147
+#: setup.c:1182
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -7759,7 +7847,7 @@
 "%s)\n"
 "Stoppe bei Dateisystemgrenze (GIT_DISCOVERY_ACROSS_FILESYSTEM nicht gesetzt)."
 
-#: setup.c:1258
+#: setup.c:1293
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -7768,15 +7856,15 @@
 "Problem mit Wert für Dateimodus (0%.3o) von core.sharedRepository.\n"
 "Der Besitzer der Dateien muss immer Lese- und Schreibrechte haben."
 
-#: setup.c:1304
+#: setup.c:1340
 msgid "open /dev/null or dup failed"
 msgstr "Öffnen von /dev/null oder dup fehlgeschlagen."
 
-#: setup.c:1319
+#: setup.c:1355
 msgid "fork failed"
 msgstr "fork fehlgeschlagen"
 
-#: setup.c:1324
+#: setup.c:1360
 msgid "setsid failed"
 msgstr "setsid fehlgeschlagen"
 
@@ -7964,7 +8052,7 @@
 msgid "confused by unstable object source data for %s"
 msgstr "Fehler wegen instabilen Objektquelldaten für %s"
 
-#: sha1-file.c:1906 builtin/pack-objects.c:1055
+#: sha1-file.c:1906 builtin/pack-objects.c:1085
 #, c-format
 msgid "failed utime() on %s"
 msgstr "Fehler beim Aufruf von utime() auf '%s'."
@@ -8145,43 +8233,43 @@
 msgstr "ungültiger Objektname '%.*s'."
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
-#: strbuf.c:853
+#: strbuf.c:848
 #, c-format
 msgid "%u.%2.2u GiB"
 msgstr "%u.%2.2u GiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
-#: strbuf.c:855
+#: strbuf.c:850
 #, c-format
 msgid "%u.%2.2u GiB/s"
 msgstr "%u.%2.2u GiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte
-#: strbuf.c:863
+#: strbuf.c:858
 #, c-format
 msgid "%u.%2.2u MiB"
 msgstr "%u.%2.2u MiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
-#: strbuf.c:865
+#: strbuf.c:860
 #, c-format
 msgid "%u.%2.2u MiB/s"
 msgstr "%u.%2.2u MiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte
-#: strbuf.c:872
+#: strbuf.c:867
 #, c-format
 msgid "%u.%2.2u KiB"
 msgstr "%u.%2.2u KiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
-#: strbuf.c:874
+#: strbuf.c:869
 #, c-format
 msgid "%u.%2.2u KiB/s"
 msgstr "%u.%2.2u KiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte
-#: strbuf.c:880
+#: strbuf.c:875
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -8189,14 +8277,14 @@
 msgstr[1] "%u Bytes"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte/second
-#: strbuf.c:882
+#: strbuf.c:877
 #, c-format
 msgid "%u byte/s"
 msgid_plural "%u bytes/s"
 msgstr[0] "%u Byte/s"
 msgstr[1] "%u Bytes/s"
 
-#: strbuf.c:1180
+#: strbuf.c:1175
 #, c-format
 msgid "could not edit '%s'"
 msgstr "Konnte '%s' nicht editieren."
@@ -8446,7 +8534,7 @@
 msgid "could not read from stdin"
 msgstr "konnte nicht von der Standard-Eingabe lesen"
 
-#: trailer.c:1011 wrapper.c:665
+#: trailer.c:1011 wrapper.c:673
 #, c-format
 msgid "could not stat %s"
 msgstr "Konnte '%s' nicht lesen"
@@ -8470,22 +8558,22 @@
 msgid "could not rename temporary file to %s"
 msgstr "konnte temporäre Datei nicht zu %s umbenennen"
 
-#: transport-helper.c:61 transport-helper.c:90
+#: transport-helper.c:62 transport-helper.c:91
 msgid "full write to remote helper failed"
 msgstr "Vollständiges Schreiben zu Remote-Helper fehlgeschlagen."
 
-#: transport-helper.c:144
+#: transport-helper.c:145
 #, c-format
 msgid "unable to find remote helper for '%s'"
 msgstr "Konnte Remote-Helper für '%s' nicht finden."
 
-#: transport-helper.c:160 transport-helper.c:571
+#: transport-helper.c:161 transport-helper.c:575
 msgid "can't dup helper output fd"
 msgstr ""
 "Konnte dup() auf Dateideskriptor für Ausgaben des Remote-Helpers nicht "
 "ausführen."
 
-#: transport-helper.c:211
+#: transport-helper.c:214
 #, c-format
 msgid ""
 "unknown mandatory capability %s; this remote helper probably needs newer "
@@ -8494,158 +8582,163 @@
 "Unbekannte erforderliche Fähigkeit %s; dieser Remote-Helper benötigt\n"
 "wahrscheinlich eine neuere Version von Git."
 
-#: transport-helper.c:217
+#: transport-helper.c:220
 msgid "this remote helper should implement refspec capability"
 msgstr "Dieser Remote-Helper sollte die \"refspec\"-Fähigkeit implementieren."
 
-#: transport-helper.c:284 transport-helper.c:425
+#: transport-helper.c:287 transport-helper.c:429
 #, c-format
 msgid "%s unexpectedly said: '%s'"
 msgstr "unerwartete Ausgabe von %s: '%s'"
 
-#: transport-helper.c:414
+#: transport-helper.c:417
 #, c-format
 msgid "%s also locked %s"
 msgstr "%s sperrte auch %s"
 
-#: transport-helper.c:493
+#: transport-helper.c:497
 msgid "couldn't run fast-import"
 msgstr "Konnte \"fast-import\" nicht ausführen."
 
-#: transport-helper.c:516
+#: transport-helper.c:520
 msgid "error while running fast-import"
 msgstr "Fehler beim Ausführen von 'fast-import'."
 
-#: transport-helper.c:545 transport-helper.c:1135
+#: transport-helper.c:549 transport-helper.c:1156
 #, c-format
 msgid "could not read ref %s"
 msgstr "Konnte Referenz %s nicht lesen."
 
-#: transport-helper.c:590
+#: transport-helper.c:594
 #, c-format
 msgid "unknown response to connect: %s"
 msgstr "Unbekannte Antwort auf 'connect': %s"
 
-#: transport-helper.c:612
+#: transport-helper.c:616
 msgid "setting remote service path not supported by protocol"
 msgstr ""
 "Setzen des Remote-Service Pfads wird von dem Protokoll nicht unterstützt."
 
-#: transport-helper.c:614
+#: transport-helper.c:618
 msgid "invalid remote service path"
 msgstr "Ungültiger Remote-Service Pfad."
 
-#: transport-helper.c:657 transport.c:1339
+#: transport-helper.c:661 transport.c:1347
 msgid "operation not supported by protocol"
 msgstr "Die Operation wird von dem Protokoll nicht unterstützt."
 
-#: transport-helper.c:660
+#: transport-helper.c:664
 #, c-format
 msgid "can't connect to subservice %s"
 msgstr "Kann keine Verbindung zu Subservice %s herstellen."
 
-#: transport-helper.c:736
+#: transport-helper.c:740
 #, c-format
 msgid "expected ok/error, helper said '%s'"
 msgstr "Erwartete ok/error, Remote-Helper gab '%s' aus."
 
-#: transport-helper.c:789
+#: transport-helper.c:793
 #, c-format
 msgid "helper reported unexpected status of %s"
 msgstr "Remote-Helper meldete unerwarteten Status von %s."
 
-#: transport-helper.c:850
+#: transport-helper.c:854
 #, c-format
 msgid "helper %s does not support dry-run"
 msgstr "Remote-Helper %s unterstützt kein Trockenlauf."
 
-#: transport-helper.c:853
+#: transport-helper.c:857
 #, c-format
 msgid "helper %s does not support --signed"
 msgstr "Remote-Helper %s unterstützt kein --signed."
 
-#: transport-helper.c:856
+#: transport-helper.c:860
 #, c-format
 msgid "helper %s does not support --signed=if-asked"
 msgstr "Remote-Helper %s unterstützt kein --signed=if-asked."
 
-#: transport-helper.c:861
+#: transport-helper.c:865
 #, c-format
 msgid "helper %s does not support --atomic"
 msgstr "Remote-Helper %s unterstützt kein --atomic."
 
-#: transport-helper.c:867
+#: transport-helper.c:871
 #, c-format
 msgid "helper %s does not support 'push-option'"
 msgstr "Remote-Helper %s unterstützt nicht 'push-option'."
 
-#: transport-helper.c:966
+#: transport-helper.c:970
 msgid "remote-helper doesn't support push; refspec needed"
 msgstr "Remote-Helper unterstützt kein Push; Refspec benötigt"
 
-#: transport-helper.c:971
+#: transport-helper.c:975
 #, c-format
 msgid "helper %s does not support 'force'"
 msgstr "Remote-Helper %s unterstützt kein 'force'."
 
-#: transport-helper.c:1018
+#: transport-helper.c:1022
 msgid "couldn't run fast-export"
 msgstr "Konnte \"fast-export\" nicht ausführen."
 
-#: transport-helper.c:1023
+#: transport-helper.c:1027
 msgid "error while running fast-export"
 msgstr "Fehler beim Ausführen von \"fast-export\"."
 
-#: transport-helper.c:1048
+#: transport-helper.c:1052
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
-"Perhaps you should specify a branch such as 'master'.\n"
+"Perhaps you should specify a branch.\n"
 msgstr ""
 "Keine gemeinsamen Referenzen und nichts spezifiziert; keine Ausführung.\n"
-"Vielleicht sollten Sie einen Branch wie 'master' angeben.\n"
+"Vielleicht sollten Sie einen Branch angeben.\n"
 
-#: transport-helper.c:1121
+#: transport-helper.c:1133
+#, c-format
+msgid "unsupported object format '%s'"
+msgstr "nicht unterstütztes Objekt-Format '%s'"
+
+#: transport-helper.c:1142
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "Ungültige Antwort in Referenzliste: %s"
 
-#: transport-helper.c:1273
+#: transport-helper.c:1294
 #, c-format
 msgid "read(%s) failed"
 msgstr "Lesen von %s fehlgeschlagen."
 
-#: transport-helper.c:1300
+#: transport-helper.c:1321
 #, c-format
 msgid "write(%s) failed"
 msgstr "Schreiben von %s fehlgeschlagen."
 
-#: transport-helper.c:1349
+#: transport-helper.c:1370
 #, c-format
 msgid "%s thread failed"
 msgstr "Thread %s fehlgeschlagen."
 
-#: transport-helper.c:1353
+#: transport-helper.c:1374
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "Fehler beim Beitreten zu Thread %s: %s"
 
-#: transport-helper.c:1372 transport-helper.c:1376
+#: transport-helper.c:1393 transport-helper.c:1397
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "Kann Thread zum Kopieren von Daten nicht starten: %s"
 
-#: transport-helper.c:1413
+#: transport-helper.c:1434
 #, c-format
 msgid "%s process failed to wait"
 msgstr "Fehler beim Warten von Prozess %s."
 
-#: transport-helper.c:1417
+#: transport-helper.c:1438
 #, c-format
 msgid "%s process failed"
 msgstr "Prozess %s fehlgeschlagen"
 
-#: transport-helper.c:1435 transport-helper.c:1444
+#: transport-helper.c:1456 transport-helper.c:1465
 msgid "can't start thread for copying data"
 msgstr "Kann Thread zum Kopieren von Daten nicht starten."
 
@@ -8659,33 +8752,33 @@
 msgid "could not read bundle '%s'"
 msgstr "Konnte Paket '%s' nicht lesen."
 
-#: transport.c:214
+#: transport.c:220
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport: ungültige --depth Option '%s'"
 
-#: transport.c:266
+#: transport.c:272
 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:267
+#: transport.c:273
 msgid "server options require protocol version 2 or later"
 msgstr "Server-Optionen benötigen Protokoll-Version 2 oder höher"
 
-#: transport.c:632
+#: transport.c:631
 msgid "could not parse transport.color.* config"
 msgstr "Konnte transport.color.* Konfiguration nicht parsen."
 
-#: transport.c:705
+#: transport.c:704
 msgid "support for protocol v2 not implemented yet"
 msgstr "Unterstützung für Protokoll v2 noch nicht implementiert."
 
-#: transport.c:839
+#: transport.c:838
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "Unbekannter Wert für Konfiguration '%s': %s"
 
-#: transport.c:905
+#: transport.c:904
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "Übertragungsart '%s' nicht erlaubt."
@@ -8694,7 +8787,7 @@
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync wird nicht länger unterstützt."
 
-#: transport.c:1052
+#: transport.c:1059
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -8703,7 +8796,7 @@
 "Die folgenden Submodul-Pfade enthalten Änderungen, die in keinem\n"
 "Remote-Repository gefunden wurden:\n"
 
-#: transport.c:1056
+#: transport.c:1063
 #, c-format
 msgid ""
 "\n"
@@ -8730,11 +8823,11 @@
 "zum Versenden zu einem Remote-Repository.\n"
 "\n"
 
-#: transport.c:1064
+#: transport.c:1071
 msgid "Aborting."
 msgstr "Abbruch."
 
-#: transport.c:1209
+#: transport.c:1216
 msgid "failed to push all needed submodules"
 msgstr "Fehler beim Versand aller erforderlichen Submodule."
 
@@ -9028,7 +9121,7 @@
 msgid "Updating index flags"
 msgstr "Aktualisiere Index-Markierungen"
 
-#: upload-pack.c:1337
+#: upload-pack.c:1415
 msgid "expected flush after fetch arguments"
 msgstr "erwartete Flush nach Abrufen der Argumente"
 
@@ -9065,47 +9158,47 @@
 msgid "Fetching objects"
 msgstr "Anfordern der Objekte"
 
-#: worktree.c:262 builtin/am.c:2098
+#: worktree.c:248 builtin/am.c:2098
 #, c-format
 msgid "failed to read '%s'"
 msgstr "Fehler beim Lesen von '%s'"
 
-#: worktree.c:309
+#: worktree.c:295
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "'%s' im Hauptarbeitsverzeichnis ist nicht das Repository-Verzeichnis."
 
-#: worktree.c:320
+#: worktree.c:306
 #, 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:332
+#: worktree.c:318
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' existiert nicht."
 
-#: worktree.c:338
+#: worktree.c:324
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' ist keine .git-Datei, Fehlercode %d"
 
-#: worktree.c:347
+#: worktree.c:333
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' zeigt nicht zurück auf '%s'"
 
-#: wrapper.c:186 wrapper.c:356
+#: wrapper.c:194 wrapper.c:364
 #, c-format
 msgid "could not open '%s' for reading and writing"
 msgstr "Konnte '%s' nicht zum Lesen und Schreiben öffnen."
 
-#: wrapper.c:387 wrapper.c:588
+#: wrapper.c:395 wrapper.c:596
 #, c-format
 msgid "unable to access '%s'"
 msgstr "konnte nicht auf '%s' zugreifen"
 
-#: wrapper.c:596
+#: wrapper.c:604
 msgid "unable to get current working directory"
 msgstr "Konnte aktuelles Arbeitsverzeichnis nicht bekommen."
 
@@ -9526,39 +9619,46 @@
 "  (benutzen Sie \"git bisect reset\", um zum ursprünglichen Branch "
 "zurückzukehren)"
 
-#: wt-status.c:1692
+#: wt-status.c:1494
+#, 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:1733
 msgid "On branch "
 msgstr "Auf Branch "
 
-#: wt-status.c:1699
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "interaktives Rebase im Gange; auf "
 
-#: wt-status.c:1701
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "Rebase im Gange; auf "
 
-#: wt-status.c:1711
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Im Moment auf keinem Branch."
 
-#: wt-status.c:1728
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "Initialer Commit"
 
-#: wt-status.c:1729
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "Noch keine Commits"
 
-#: wt-status.c:1743
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "Unversionierte Dateien"
 
-#: wt-status.c:1745
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "Ignorierte Dateien"
 
-#: wt-status.c:1749
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9569,32 +9669,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:1755
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Unversionierte Dateien nicht aufgelistet%s"
 
-#: wt-status.c:1757
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (benutzen Sie die Option -u, um unversionierte Dateien anzuzeigen)"
 
-#: wt-status.c:1763
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Keine Änderungen"
 
-#: wt-status.c:1768
+#: wt-status.c:1809
 #, 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:1771
+#: wt-status.c:1812
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "keine Änderungen zum Commit vorgemerkt\n"
 
-#: wt-status.c:1774
+#: wt-status.c:1815
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9603,67 +9703,67 @@
 "nichts zum Commit vorgemerkt, aber es gibt unversionierte Dateien\n"
 "(benutzen Sie \"git add\" zum Versionieren)\n"
 
-#: wt-status.c:1777
+#: wt-status.c:1818
 #, 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:1780
+#: wt-status.c:1821
 #, 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:1783 wt-status.c:1788
+#: wt-status.c:1824 wt-status.c:1829
 #, c-format
 msgid "nothing to commit\n"
 msgstr "nichts zu committen\n"
 
-#: wt-status.c:1786
+#: wt-status.c:1827
 #, 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:1790
+#: wt-status.c:1831
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "nichts zu committen, Arbeitsverzeichnis unverändert\n"
 
-#: wt-status.c:1903
+#: wt-status.c:1944
 msgid "No commits yet on "
 msgstr "Noch keine Commits in "
 
-#: wt-status.c:1907
+#: wt-status.c:1948
 msgid "HEAD (no branch)"
 msgstr "HEAD (kein Branch)"
 
-#: wt-status.c:1938
+#: wt-status.c:1979
 msgid "different"
 msgstr "unterschiedlich"
 
-#: wt-status.c:1940 wt-status.c:1948
+#: wt-status.c:1981 wt-status.c:1989
 msgid "behind "
 msgstr "hinterher "
 
-#: wt-status.c:1943 wt-status.c:1946
+#: wt-status.c:1984 wt-status.c:1987
 msgid "ahead "
 msgstr "voraus "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2468
+#: wt-status.c:2509
 #, 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:2474
+#: wt-status.c:2515
 msgid "additionally, your index contains uncommitted changes."
 msgstr "Zusätzlich enthält die Staging-Area nicht committete Änderungen."
 
-#: wt-status.c:2476
+#: wt-status.c:2517
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr ""
@@ -9744,7 +9844,7 @@
 msgid "interactive picking"
 msgstr "interaktives Auswählen"
 
-#: builtin/add.c:326 builtin/checkout.c:1535 builtin/reset.c:308
+#: builtin/add.c:326 builtin/checkout.c:1533 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "Blöcke interaktiv auswählen"
 
@@ -9882,14 +9982,14 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "--chmod Parameter '%s' muss entweder -x oder +x sein"
 
-#: builtin/add.c:501 builtin/checkout.c:1703 builtin/commit.c:351
+#: builtin/add.c:501 builtin/checkout.c:1701 builtin/commit.c:351
 #: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1506
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr ""
 "Die Option --pathspec-from-file ist inkompatibel mit\n"
 "Pfadspezifikation-Argumenten."
 
-#: builtin/add.c:508 builtin/checkout.c:1715 builtin/commit.c:357
+#: builtin/add.c:508 builtin/checkout.c:1713 builtin/commit.c:357
 #: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1512
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "Die Option --pathspec-file-nul benötigt --pathspec-from-file"
@@ -10162,7 +10262,7 @@
 msgid "allow fall back on 3way merging if needed"
 msgstr "erlaube, falls notwendig, das Zurückfallen auf einen 3-Wege-Merge"
 
-#: builtin/am.c:2218 builtin/init-db.c:541 builtin/prune-packed.c:16
+#: builtin/am.c:2218 builtin/init-db.c:559 builtin/prune-packed.c:16
 #: builtin/repack.c:306 builtin/stash.c:816
 msgid "be quiet"
 msgstr "weniger Ausgaben"
@@ -10217,7 +10317,7 @@
 
 #: builtin/am.c:2262 builtin/branch.c:659 builtin/for-each-ref.c:38
 #: builtin/replace.c:556 builtin/tag.c:438 builtin/verify-tag.c:38
-#: bugreport.c:131
+#: bugreport.c:137
 msgid "format"
 msgstr "Format"
 
@@ -10514,114 +10614,118 @@
 "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:478
+#: builtin/bisect--helper.c:460 builtin/bisect--helper.c:473
+msgid "'' is not a valid term"
+msgstr "'' ist kein gültiger Begriff"
+
+#: builtin/bisect--helper.c:483
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "Nicht erkannte Position: '%s'"
 
-#: builtin/bisect--helper.c:482
+#: builtin/bisect--helper.c:487
 #, 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:514
+#: builtin/bisect--helper.c:519
 msgid "bad HEAD - I need a HEAD"
 msgstr "Ungültiger HEAD - HEAD wird benötigt."
 
-#: builtin/bisect--helper.c:529
+#: builtin/bisect--helper.c:534
 #, 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:550
+#: builtin/bisect--helper.c:555
 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:553
+#: builtin/bisect--helper.c:558
 msgid "bad HEAD - strange symbolic ref"
 msgstr "Ungültiger HEAD - merkwürdige symbolische Referenz."
 
-#: builtin/bisect--helper.c:577
+#: builtin/bisect--helper.c:582
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "Ungültige Referenz: '%s'"
 
-#: builtin/bisect--helper.c:633
+#: builtin/bisect--helper.c:638
 msgid "perform 'git bisect next'"
 msgstr "'git bisect next' ausführen"
 
-#: builtin/bisect--helper.c:635
+#: builtin/bisect--helper.c:640
 msgid "write the terms to .git/BISECT_TERMS"
 msgstr "die Begriffe nach .git/BISECT_TERMS schreiben"
 
-#: builtin/bisect--helper.c:637
+#: builtin/bisect--helper.c:642
 msgid "cleanup the bisection state"
 msgstr "den Zustand der binären Suche aufräumen"
 
-#: builtin/bisect--helper.c:639
+#: builtin/bisect--helper.c:644
 msgid "check for expected revs"
 msgstr "auf erwartete Commits prüfen"
 
-#: builtin/bisect--helper.c:641
+#: builtin/bisect--helper.c:646
 msgid "reset the bisection state"
 msgstr "den Zustand der binären Suche zurücksetzen"
 
-#: builtin/bisect--helper.c:643
+#: builtin/bisect--helper.c:648
 msgid "write out the bisection state in BISECT_LOG"
 msgstr "den Zustand der binären Suche nach BISECT_LOG schreiben"
 
-#: builtin/bisect--helper.c:645
+#: builtin/bisect--helper.c:650
 msgid "check and set terms in a bisection state"
 msgstr "Begriffe innerhalb einer binären Suche prüfen und setzen"
 
-#: builtin/bisect--helper.c:647
+#: builtin/bisect--helper.c:652
 msgid "check whether bad or good terms exist"
 msgstr "prüfen, ob Begriffe für gute und schlechte Commits existieren"
 
-#: builtin/bisect--helper.c:649
+#: builtin/bisect--helper.c:654
 msgid "print out the bisect terms"
 msgstr "die Begriffe für die binäre Suche ausgeben"
 
-#: builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:656
 msgid "start the bisect session"
 msgstr "Sitzung für binäre Suche starten"
 
-#: builtin/bisect--helper.c:653
+#: builtin/bisect--helper.c:658
 msgid "update BISECT_HEAD instead of checking out the current commit"
 msgstr "BISECT_HEAD aktualisieren, anstatt den aktuellen Commit auszuchecken"
 
-#: builtin/bisect--helper.c:655
+#: builtin/bisect--helper.c:660
 msgid "no log for BISECT_WRITE"
 msgstr "kein Log für BISECT_WRITE"
 
-#: builtin/bisect--helper.c:673
+#: builtin/bisect--helper.c:678
 msgid "--write-terms requires two arguments"
 msgstr "--write-terms benötigt zwei Argumente."
 
-#: builtin/bisect--helper.c:677
+#: builtin/bisect--helper.c:682
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state erwartet keine Argumente."
 
-#: builtin/bisect--helper.c:684
+#: builtin/bisect--helper.c:689
 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:688
+#: builtin/bisect--helper.c:693
 msgid "--bisect-write requires either 4 or 5 arguments"
 msgstr "--bisect-write benötigt entweder 4 oder 5 Argumente."
 
-#: builtin/bisect--helper.c:694
+#: builtin/bisect--helper.c:699
 msgid "--check-and-set-terms requires 3 arguments"
 msgstr "--check-and-set-terms benötigt 3 Argumente."
 
-#: builtin/bisect--helper.c:700
+#: builtin/bisect--helper.c:705
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check benötigt 2 oder 3 Argumente."
 
-#: builtin/bisect--helper.c:706
+#: builtin/bisect--helper.c:711
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms benötigt 0 oder 1 Argument."
 
@@ -11239,19 +11343,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <Datei> [<Referenzname>...]"
 
-#: builtin/bundle.c:66 builtin/pack-objects.c:3376
+#: builtin/bundle.c:66 builtin/pack-objects.c:3448
 msgid "do not show progress meter"
 msgstr "keine Fortschrittsanzeige anzeigen"
 
-#: builtin/bundle.c:68 builtin/pack-objects.c:3378
+#: builtin/bundle.c:68 builtin/pack-objects.c:3450
 msgid "show progress meter"
 msgstr "Fortschrittsanzeige anzeigen"
 
-#: builtin/bundle.c:70 builtin/pack-objects.c:3380
+#: builtin/bundle.c:70 builtin/pack-objects.c:3452
 msgid "show progress meter during object writing phase"
 msgstr "Forschrittsanzeige während des Schreibens von Objekten anzeigen"
 
-#: builtin/bundle.c:73 builtin/pack-objects.c:3383
+#: builtin/bundle.c:73 builtin/pack-objects.c:3455
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "ähnlich zu --all-progress wenn Fortschrittsanzeige darstellt wird"
 
@@ -11291,11 +11395,11 @@
 
 #: builtin/cat-file.c:599
 msgid ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 msgstr ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<Format>] | --batch-check[=<Format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 
 #: builtin/cat-file.c:620
 msgid "only one batch option may be specified"
@@ -11329,7 +11433,7 @@
 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 git-submodule.sh:984
+#: builtin/cat-file.c:648 git-submodule.sh:958
 msgid "blob"
 msgstr "Blob"
 
@@ -11394,8 +11498,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:1488 builtin/gc.c:537
-#: builtin/worktree.c:502
+#: builtin/check-ignore.c:21 builtin/checkout.c:1486 builtin/gc.c:537
+#: builtin/worktree.c:561
 msgid "suppress progress reporting"
 msgstr "Fortschrittsanzeige unterdrücken"
 
@@ -11490,7 +11594,7 @@
 #: builtin/checkout-index.c:178 builtin/column.c:31
 #: builtin/submodule--helper.c:1400 builtin/submodule--helper.c:1403
 #: builtin/submodule--helper.c:1411 builtin/submodule--helper.c:1909
-#: builtin/worktree.c:675
+#: builtin/worktree.c:754
 msgid "string"
 msgstr "Zeichenkette"
 
@@ -11607,11 +11711,11 @@
 msgid "path '%s' is unmerged"
 msgstr "Pfad '%s' ist nicht zusammengeführt."
 
-#: builtin/checkout.c:704
+#: builtin/checkout.c:702
 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:758
+#: builtin/checkout.c:756
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11620,50 +11724,50 @@
 "Kann nicht mit vorgemerkten Änderungen in folgenden Dateien fortsetzen:\n"
 "%s"
 
-#: builtin/checkout.c:861
+#: builtin/checkout.c:859
 #, 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:903
+#: builtin/checkout.c:901
 msgid "HEAD is now at"
 msgstr "HEAD ist jetzt bei"
 
-#: builtin/checkout.c:907 builtin/clone.c:720
+#: builtin/checkout.c:905 builtin/clone.c:720
 msgid "unable to update HEAD"
 msgstr "Konnte HEAD nicht aktualisieren."
 
-#: builtin/checkout.c:911
+#: builtin/checkout.c:909
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Setze Branch '%s' neu\n"
 
-#: builtin/checkout.c:914
+#: builtin/checkout.c:912
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Bereits auf '%s'\n"
 
-#: builtin/checkout.c:918
+#: builtin/checkout.c:916
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Zu umgesetztem Branch '%s' gewechselt\n"
 
-#: builtin/checkout.c:920 builtin/checkout.c:1344
+#: builtin/checkout.c:918 builtin/checkout.c:1342
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Zu neuem Branch '%s' gewechselt\n"
 
-#: builtin/checkout.c:922
+#: builtin/checkout.c:920
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Zu Branch '%s' gewechselt\n"
 
-#: builtin/checkout.c:973
+#: builtin/checkout.c:971
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... und %d weitere.\n"
 
-#: builtin/checkout.c:979
+#: builtin/checkout.c:977
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11686,7 +11790,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:996
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11713,19 +11817,19 @@
 " git branch <neuer-Branchname> %s\n"
 "\n"
 
-#: builtin/checkout.c:1033
+#: builtin/checkout.c:1031
 msgid "internal error in revision walk"
 msgstr "interner Fehler im Revisionsgang"
 
-#: builtin/checkout.c:1037
+#: builtin/checkout.c:1035
 msgid "Previous HEAD position was"
 msgstr "Vorherige Position von HEAD war"
 
-#: builtin/checkout.c:1077 builtin/checkout.c:1339
+#: builtin/checkout.c:1075 builtin/checkout.c:1337
 msgid "You are on a branch yet to be born"
 msgstr "Sie sind auf einem Branch, der noch nicht geboren ist"
 
-#: builtin/checkout.c:1152
+#: builtin/checkout.c:1150
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11735,7 +11839,7 @@
 "Bitte benutzen Sie -- (und optional --no-guess), um diese\n"
 "eindeutig voneinander zu unterscheiden."
 
-#: builtin/checkout.c:1159
+#: builtin/checkout.c:1157
 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"
@@ -11758,51 +11862,51 @@
 "bevorzugen möchten, z.B. 'origin', können Sie die Einstellung\n"
 "checkout.defaultRemote=origin in Ihrer Konfiguration setzen."
 
-#: builtin/checkout.c:1169
+#: builtin/checkout.c:1167
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' entspricht mehreren (%d) Remote-Tracking-Branches"
 
-#: builtin/checkout.c:1235
+#: builtin/checkout.c:1233
 msgid "only one reference expected"
 msgstr "nur eine Referenz erwartet"
 
-#: builtin/checkout.c:1252
+#: builtin/checkout.c:1250
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "nur eine Referenz erwartet, %d gegeben."
 
-#: builtin/checkout.c:1298 builtin/worktree.c:283 builtin/worktree.c:451
+#: builtin/checkout.c:1296 builtin/worktree.c:342 builtin/worktree.c:510
 #, c-format
 msgid "invalid reference: %s"
 msgstr "Ungültige Referenz: %s"
 
-#: builtin/checkout.c:1311 builtin/checkout.c:1677
+#: builtin/checkout.c:1309 builtin/checkout.c:1675
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "Referenz ist kein \"Tree\"-Objekt: %s"
 
-#: builtin/checkout.c:1358
+#: builtin/checkout.c:1356
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "Ein Branch wird erwartet, Tag '%s' bekommen"
 
-#: builtin/checkout.c:1360
+#: builtin/checkout.c:1358
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "Ein Branch wird erwartet, Remote-Branch '%s' bekommen"
 
-#: builtin/checkout.c:1361 builtin/checkout.c:1369
+#: builtin/checkout.c:1359 builtin/checkout.c:1367
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "Ein Branch wird erwartet, '%s' bekommen"
 
-#: builtin/checkout.c:1364
+#: builtin/checkout.c:1362
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "Ein Branch wird erwartet, Commit '%s' bekommen"
 
-#: builtin/checkout.c:1380
+#: builtin/checkout.c:1378
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11810,7 +11914,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:1384
+#: builtin/checkout.c:1382
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11819,7 +11923,7 @@
 "werden.\n"
 "Ziehen Sie \"git am --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1388
+#: builtin/checkout.c:1386
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11828,7 +11932,7 @@
 "werden.\n"
 "Ziehen Sie \"git rebase --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1390
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11837,7 +11941,7 @@
 "gewechselt werden.\n"
 "Ziehen Sie \"git cherry-pick --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1394
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11846,147 +11950,147 @@
 "werden.\n"
 "Ziehen Sie \"git revert --quit\" oder \"git worktree add\" in Betracht."
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1398
 msgid "you are switching branch while bisecting"
 msgstr "Sie wechseln den Branch während einer binären Suche"
 
-#: builtin/checkout.c:1407
+#: builtin/checkout.c:1405
 msgid "paths cannot be used with switching branches"
 msgstr "Pfade können nicht beim Wechseln von Branches verwendet werden"
 
-#: builtin/checkout.c:1410 builtin/checkout.c:1414 builtin/checkout.c:1418
+#: builtin/checkout.c:1408 builtin/checkout.c:1412 builtin/checkout.c:1416
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' kann nicht beim Wechseln von Branches verwendet werden"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1425 builtin/checkout.c:1428
-#: builtin/checkout.c:1433 builtin/checkout.c:1438
+#: builtin/checkout.c:1420 builtin/checkout.c:1423 builtin/checkout.c:1426
+#: builtin/checkout.c:1431 builtin/checkout.c:1436
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' kann nicht mit '%s' verwendet werden"
 
-#: builtin/checkout.c:1435
+#: builtin/checkout.c:1433
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' kann nicht <Startpunkt> bekommen"
 
-#: builtin/checkout.c:1443
+#: builtin/checkout.c:1441
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Kann Branch nicht zu Nicht-Commit '%s' wechseln"
 
-#: builtin/checkout.c:1450
+#: builtin/checkout.c:1448
 msgid "missing branch or commit argument"
 msgstr "Branch- oder Commit-Argument fehlt"
 
-#: builtin/checkout.c:1492 builtin/clone.c:91 builtin/commit-graph.c:80
-#: builtin/commit-graph.c:164 builtin/fetch.c:168 builtin/merge.c:288
+#: builtin/checkout.c:1490 builtin/clone.c:91 builtin/commit-graph.c:82
+#: builtin/commit-graph.c:189 builtin/fetch.c:168 builtin/merge.c:288
 #: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:561
 #: builtin/send-pack.c:173
 msgid "force progress reporting"
 msgstr "Fortschrittsanzeige erzwingen"
 
-#: builtin/checkout.c:1493
+#: builtin/checkout.c:1491
 msgid "perform a 3-way merge with the new branch"
 msgstr "einen 3-Wege-Merge mit dem neuen Branch ausführen"
 
-#: builtin/checkout.c:1494 builtin/log.c:1709 parse-options.h:322
+#: builtin/checkout.c:1492 builtin/log.c:1709 parse-options.h:322
 msgid "style"
 msgstr "Stil"
 
-#: builtin/checkout.c:1495
+#: builtin/checkout.c:1493
 msgid "conflict style (merge or diff3)"
 msgstr "Konfliktstil (merge oder diff3)"
 
-#: builtin/checkout.c:1507 builtin/worktree.c:499
+#: builtin/checkout.c:1505 builtin/worktree.c:558
 msgid "detach HEAD at named commit"
 msgstr "HEAD bei benanntem Commit loslösen"
 
-#: builtin/checkout.c:1508
+#: builtin/checkout.c:1506
 msgid "set upstream info for new branch"
 msgstr "Informationen zum Upstream-Branch für den neuen Branch setzen"
 
-#: builtin/checkout.c:1510
+#: builtin/checkout.c:1508
 msgid "force checkout (throw away local modifications)"
 msgstr "Auschecken erzwingen (verwirft lokale Änderungen)"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new-branch"
 msgstr "neuer Branch"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new unparented branch"
 msgstr "neuer Branch ohne Eltern-Commit"
 
-#: builtin/checkout.c:1514 builtin/merge.c:292
+#: builtin/checkout.c:1512 builtin/merge.c:292
 msgid "update ignored files (default)"
 msgstr "ignorierte Dateien aktualisieren (Standard)"
 
-#: builtin/checkout.c:1517
+#: builtin/checkout.c:1515
 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:1530
+#: builtin/checkout.c:1528
 msgid "checkout our version for unmerged files"
 msgstr "unsere Variante für nicht zusammengeführte Dateien auschecken"
 
-#: builtin/checkout.c:1533
+#: builtin/checkout.c:1531
 msgid "checkout their version for unmerged files"
 msgstr "ihre Variante für nicht zusammengeführte Dateien auschecken"
 
-#: builtin/checkout.c:1537
+#: builtin/checkout.c:1535
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "keine Einschränkung bei Pfadspezifikationen zum partiellen Auschecken"
 
-#: builtin/checkout.c:1592
+#: builtin/checkout.c:1590
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "die Optionen -%c, -%c und --orphan schließen sich gegenseitig aus"
 
-#: builtin/checkout.c:1596
+#: builtin/checkout.c:1594
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p und --overlay schließen sich gegenseitig aus."
 
-#: builtin/checkout.c:1633
+#: builtin/checkout.c:1631
 msgid "--track needs a branch name"
 msgstr "Bei der Option --track muss ein Branchname angegeben werden."
 
-#: builtin/checkout.c:1638
+#: builtin/checkout.c:1636
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "kein Branchname; versuchen Sie -%c"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "could not resolve %s"
 msgstr "Konnte %s nicht auflösen."
 
-#: builtin/checkout.c:1686
+#: builtin/checkout.c:1684
 msgid "invalid path specification"
 msgstr "ungültige Pfadspezifikation"
 
-#: builtin/checkout.c:1693
+#: builtin/checkout.c:1691
 #, 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:1697
+#: builtin/checkout.c:1695
 #, 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:1706
+#: builtin/checkout.c:1704
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "Die Optionen --pathspec-from-file und --detach sind inkompatibel."
 
-#: builtin/checkout.c:1709 builtin/reset.c:325 builtin/stash.c:1503
+#: builtin/checkout.c:1707 builtin/reset.c:325 builtin/stash.c:1503
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "Die Optionen --pathspec-from-file und --patch sind inkompatibel."
 
-#: builtin/checkout.c:1720
+#: builtin/checkout.c:1718
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -11994,69 +12098,70 @@
 "git checkout: --ours/--theirs, --force und --merge sind inkompatibel wenn\n"
 "Sie aus dem Index auschecken."
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 msgid "you must specify path(s) to restore"
 msgstr "Sie müssen Pfad(e) zur Wiederherstellung angeben."
 
-#: builtin/checkout.c:1751 builtin/checkout.c:1753 builtin/checkout.c:1802
-#: builtin/checkout.c:1804 builtin/clone.c:121 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/worktree.c:495 builtin/worktree.c:497
+#: builtin/checkout.c:1749 builtin/checkout.c:1751 builtin/checkout.c:1800
+#: builtin/checkout.c:1802 builtin/clone.c:121 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2295 builtin/worktree.c:554
+#: builtin/worktree.c:556
 msgid "branch"
 msgstr "Branch"
 
-#: builtin/checkout.c:1752
+#: builtin/checkout.c:1750
 msgid "create and checkout a new branch"
 msgstr "einen neuen Branch erzeugen und auschecken"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid "create/reset and checkout a branch"
 msgstr "einen Branch erstellen/umsetzen und auschecken"
 
-#: builtin/checkout.c:1755
+#: builtin/checkout.c:1753
 msgid "create reflog for new branch"
 msgstr "das Reflog für den neuen Branch erzeugen"
 
-#: builtin/checkout.c:1757
+#: builtin/checkout.c:1755
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "Zweite Vermutung 'git checkout <kein-solcher-Branch>' (Standard)"
 
-#: builtin/checkout.c:1758
+#: builtin/checkout.c:1756
 msgid "use overlay mode (default)"
 msgstr "benutze Overlay-Modus (Standard)"
 
-#: builtin/checkout.c:1803
+#: builtin/checkout.c:1801
 msgid "create and switch to a new branch"
 msgstr "einen neuen Branch erzeugen und dahin wechseln"
 
-#: builtin/checkout.c:1805
+#: builtin/checkout.c:1803
 msgid "create/reset and switch to a branch"
 msgstr "einen Branch erstellen/umsetzen und dahin wechseln"
 
-#: builtin/checkout.c:1807
+#: builtin/checkout.c:1805
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "Zweite Vermutung 'git switch <kein-solcher-Branch>'"
 
-#: builtin/checkout.c:1809
+#: builtin/checkout.c:1807
 msgid "throw away local modifications"
 msgstr "lokale Änderungen verwerfen"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "which tree-ish to checkout from"
 msgstr "Von welcher Commit-Referenz ausgecheckt werden soll"
 
-#: builtin/checkout.c:1845
+#: builtin/checkout.c:1843
 msgid "restore the index"
 msgstr "Index wiederherstellen"
 
-#: builtin/checkout.c:1847
+#: builtin/checkout.c:1845
 msgid "restore the working tree (default)"
 msgstr "das Arbeitsverzeichnis wiederherstellen (Standard)"
 
-#: builtin/checkout.c:1849
+#: builtin/checkout.c:1847
 msgid "ignore unmerged entries"
 msgstr "ignoriere nicht zusammengeführte Einträge"
 
-#: builtin/checkout.c:1850
+#: builtin/checkout.c:1848
 msgid "use overlay mode"
 msgstr "benutze Overlay-Modus"
 
@@ -12219,11 +12324,7 @@
 msgid "remove only ignored files"
 msgstr "nur ignorierte Dateien löschen"
 
-#: builtin/clean.c:931
-msgid "-x and -X cannot be used together"
-msgstr "Die Optionen -x und -X können nicht gemeinsam verwendet werden."
-
-#: builtin/clean.c:935
+#: builtin/clean.c:929
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -12231,7 +12332,7 @@
 "clean.requireForce auf \"true\" gesetzt und weder -i, -n noch -f gegeben; "
 "\"clean\" verweigert"
 
-#: builtin/clean.c:938
+#: builtin/clean.c:932
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -12239,6 +12340,10 @@
 "clean.requireForce standardmäßig auf \"true\" gesetzt und weder -i, -n noch -"
 "f gegeben; \"clean\" verweigert"
 
+#: builtin/clean.c:944
+msgid "-x and -X cannot be used together"
+msgstr "Die Optionen -x und -X können nicht gemeinsam verwendet werden."
+
 #: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<Optionen>] [--] <Repository> [<Verzeichnis>]"
@@ -12247,7 +12352,7 @@
 msgid "don't create a checkout"
 msgstr "kein Auschecken"
 
-#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:536
+#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:554
 msgid "create a bare repository"
 msgstr "ein Bare-Repository erstellen"
 
@@ -12279,11 +12384,11 @@
 msgid "number of submodules cloned in parallel"
 msgstr "Anzahl der parallel zu klonenden Submodule"
 
-#: builtin/clone.c:111 builtin/init-db.c:533
+#: builtin/clone.c:111 builtin/init-db.c:551
 msgid "template-directory"
 msgstr "Vorlagenverzeichnis"
 
-#: builtin/clone.c:112 builtin/init-db.c:534
+#: builtin/clone.c:112 builtin/init-db.c:552
 msgid "directory from which templates will be used"
 msgstr "Verzeichnis, von welchem die Vorlagen verwendet werden"
 
@@ -12297,8 +12402,8 @@
 msgid "use --reference only while cloning"
 msgstr "--reference nur während des Klonens benutzen"
 
-#: builtin/clone.c:119 builtin/column.c:27 builtin/merge-file.c:46
-#: builtin/pack-objects.c:3442 builtin/repack.c:329
+#: builtin/clone.c:119 builtin/column.c:27 builtin/init-db.c:562
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3514 builtin/repack.c:329
 msgid "name"
 msgstr "Name"
 
@@ -12324,7 +12429,7 @@
 msgstr ""
 "einen Klon mit unvollständiger Historie (shallow) in dieser Tiefe erstellen"
 
-#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3431
+#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3503
 #: builtin/pull.c:211
 msgid "time"
 msgstr "Zeit"
@@ -12360,11 +12465,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "jedes geklonte Submodul mit unvollständiger Historie (shallow)"
 
-#: builtin/clone.c:137 builtin/init-db.c:542
+#: builtin/clone.c:137 builtin/init-db.c:560
 msgid "gitdir"
 msgstr ".git-Verzeichnis"
 
-#: builtin/clone.c:138 builtin/init-db.c:543
+#: builtin/clone.c:138 builtin/init-db.c:561
 msgid "separate git dir from working tree"
 msgstr "Git-Verzeichnis vom Arbeitsverzeichnis separieren"
 
@@ -12495,7 +12600,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "Kann temporäre \"alternates\"-Datei nicht entfernen"
 
-#: builtin/clone.c:971 builtin/receive-pack.c:1972
+#: builtin/clone.c:971 builtin/receive-pack.c:1982
 msgid "Too many arguments."
 msgstr "Zu viele Argumente."
 
@@ -12512,48 +12617,48 @@
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "Die Optionen --bare und --separate-git-dir sind inkompatibel."
 
-#: builtin/clone.c:1004
+#: builtin/clone.c:1007
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "Repository '%s' existiert nicht."
 
-#: builtin/clone.c:1010 builtin/fetch.c:1789
+#: builtin/clone.c:1011 builtin/fetch.c:1794
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "Tiefe %s ist keine positive Zahl"
 
-#: builtin/clone.c:1020
+#: builtin/clone.c:1021
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "Zielpfad '%s' existiert bereits und ist kein leeres Verzeichnis."
 
-#: builtin/clone.c:1030
+#: builtin/clone.c:1033
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "Arbeitsverzeichnis '%s' existiert bereits."
 
-#: builtin/clone.c:1045 builtin/clone.c:1066 builtin/difftool.c:271
-#: builtin/log.c:1886 builtin/worktree.c:295 builtin/worktree.c:327
+#: builtin/clone.c:1048 builtin/clone.c:1069 builtin/difftool.c:271
+#: builtin/log.c:1886 builtin/worktree.c:354 builtin/worktree.c:386
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "Konnte führende Verzeichnisse von '%s' nicht erstellen."
 
-#: builtin/clone.c:1050
+#: builtin/clone.c:1053
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "Konnte Arbeitsverzeichnis '%s' nicht erstellen"
 
-#: builtin/clone.c:1070
+#: builtin/clone.c:1073
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Klone in Bare-Repository '%s' ...\n"
 
-#: builtin/clone.c:1072
+#: builtin/clone.c:1075
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Klone nach '%s' ...\n"
 
-#: builtin/clone.c:1096
+#: builtin/clone.c:1099
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -12561,45 +12666,45 @@
 "'clone --recursive' ist nicht kompatibel mit --reference und --reference-if-"
 "able"
 
-#: builtin/clone.c:1160
+#: builtin/clone.c:1164
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr ""
 "Die Option --depth wird in lokalen Klonen ignoriert; benutzen Sie "
 "stattdessen file://"
 
-#: builtin/clone.c:1162
+#: builtin/clone.c:1166
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-since wird in lokalen Klonen ignoriert; benutzen Sie stattdessen "
 "file://"
 
-#: builtin/clone.c:1164
+#: builtin/clone.c:1168
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-exclude wird in lokalen Klonen ignoriert; benutzen Sie stattdessen "
 "file://"
 
-#: builtin/clone.c:1166
+#: builtin/clone.c:1170
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr ""
 "--filter wird in lokalen Klonen ignoriert; benutzen Sie stattdessen file://"
 
-#: builtin/clone.c:1169
+#: builtin/clone.c:1173
 msgid "source repository is shallow, ignoring --local"
 msgstr ""
 "Quelle ist ein Repository mit unvollständiger Historie (shallow),\n"
 "ignoriere --local"
 
-#: builtin/clone.c:1174
+#: builtin/clone.c:1178
 msgid "--local is ignored"
 msgstr "--local wird ignoriert"
 
-#: builtin/clone.c:1249 builtin/clone.c:1257
+#: builtin/clone.c:1262 builtin/clone.c:1270
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Remote-Branch %s nicht im Upstream-Repository %s gefunden"
 
-#: builtin/clone.c:1260
+#: builtin/clone.c:1273
 msgid "You appear to have cloned an empty repository."
 msgstr "Sie scheinen ein leeres Repository geklont zu haben."
 
@@ -12635,14 +12740,14 @@
 msgid "--command must be the first argument"
 msgstr "Die Option --command muss an erster Stelle stehen."
 
-#: builtin/commit-graph.c:11 builtin/commit-graph.c:19
+#: builtin/commit-graph.c:13 builtin/commit-graph.c:21
 msgid ""
 "git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
 msgstr ""
 "git commit-graph verify [--object-dir <Objektverzeichnis>] [--shallow] [--"
 "[no-]progress]"
 
-#: builtin/commit-graph.c:12 builtin/commit-graph.c:24
+#: builtin/commit-graph.c:14 builtin/commit-graph.c:26
 msgid ""
 "git commit-graph write [--object-dir <objdir>] [--append] [--"
 "split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
@@ -12652,86 +12757,95 @@
 "split[=<Strategie>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
 "paths] [--[no-]progress] <Split-Optionen>"
 
-#: builtin/commit-graph.c:60
+#: builtin/commit-graph.c:62
 #, c-format
 msgid "could not find object directory matching %s"
 msgstr "konnte Objekt-Verzeichnis nicht finden, dass '%s' entsprechen soll"
 
-#: builtin/commit-graph.c:76 builtin/commit-graph.c:152
-#: builtin/commit-graph.c:257 builtin/fetch.c:180 builtin/log.c:1678
+#: builtin/commit-graph.c:78 builtin/commit-graph.c:177
+#: builtin/commit-graph.c:276 builtin/fetch.c:180 builtin/log.c:1678
 msgid "dir"
 msgstr "Verzeichnis"
 
-#: builtin/commit-graph.c:77 builtin/commit-graph.c:153
-#: builtin/commit-graph.c:258
+#: builtin/commit-graph.c:79 builtin/commit-graph.c:178
+#: builtin/commit-graph.c:277
 msgid "The object directory to store the graph"
 msgstr "Das Objektverzeichnis zum Speichern des Graphen."
 
-#: builtin/commit-graph.c:79
+#: builtin/commit-graph.c:81
 msgid "if the commit-graph is split, only verify the tip file"
 msgstr ""
 "Wenn der Commit-Graph aufgeteilt ist, nur die Datei an der Spitze überprüfen"
 
-#: builtin/commit-graph.c:102
+#: builtin/commit-graph.c:104
 #, c-format
 msgid "Could not open commit-graph '%s'"
 msgstr "Konnte Commit-Graph '%s' nicht öffnen."
 
-#: builtin/commit-graph.c:136
+#: builtin/commit-graph.c:138
 #, c-format
 msgid "unrecognized --split argument, %s"
 msgstr "nicht erkanntes --split Argument, %s"
 
-#: builtin/commit-graph.c:155
+#: builtin/commit-graph.c:151
+#, c-format
+msgid "unexpected non-hex object ID: %s"
+msgstr "unerwartete nicht-hexadezimale Objekt-ID: %s"
+
+#: builtin/commit-graph.c:156
+#, c-format
+msgid "invalid object: %s"
+msgstr "ungültiges Objekt: %s"
+
+#: builtin/commit-graph.c:180
 msgid "start walk at all refs"
 msgstr "Durchlauf auf allen Referenzen beginnen"
 
-#: builtin/commit-graph.c:157
+#: builtin/commit-graph.c:182
 msgid "scan pack-indexes listed by stdin for commits"
 msgstr "durch Standard-Eingabe gelistete Pack-Indexe nach Commits scannen"
 
-#: builtin/commit-graph.c:159
+#: builtin/commit-graph.c:184
 msgid "start walk at commits listed by stdin"
 msgstr "Lauf bei Commits beginnen, die über die Standard-Eingabe gelistet sind"
 
-#: builtin/commit-graph.c:161
+#: builtin/commit-graph.c:186
 msgid "include all commits already in the commit-graph file"
 msgstr ""
 "alle Commits einschließen, die sich bereits in der Commit-Graph-Datei "
 "befinden"
 
-#: builtin/commit-graph.c:163
+#: builtin/commit-graph.c:188
 msgid "enable computation for changed paths"
 msgstr "Berechnung für veränderte Pfade aktivieren"
 
-#: builtin/commit-graph.c:166
+#: builtin/commit-graph.c:191
 msgid "allow writing an incremental commit-graph file"
 msgstr "Erlaube das Schreiben einer inkrementellen Commit-Graph-Datei"
 
-#: builtin/commit-graph.c:170
+#: builtin/commit-graph.c:195
 msgid "maximum number of commits in a non-base split commit-graph"
 msgstr ""
 "Maximale Anzahl von Commits in einem aufgeteilten Commit-Graph ohne Basis"
 
-#: builtin/commit-graph.c:172
+#: builtin/commit-graph.c:197
 msgid "maximum ratio between two levels of a split commit-graph"
 msgstr ""
 "Maximales Verhältnis zwischen zwei Ebenen eines aufgeteilten Commit-Graph"
 
-#: builtin/commit-graph.c:174
+#: builtin/commit-graph.c:199
 msgid "only expire files older than a given date-time"
 msgstr "nur Objekte älter als angegebene Zeit verfallen lassen"
 
-#: builtin/commit-graph.c:190
+#: builtin/commit-graph.c:215
 msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
 msgstr ""
 "Benutzen Sie mindestens eins von --reachable, --stdin-commits, oder --stdin-"
 "packs."
 
-#: builtin/commit-graph.c:229
-#, c-format
-msgid "unexpected non-hex object ID: %s"
-msgstr "unerwartete nicht-hexadezimale Objekt-ID: %s"
+#: builtin/commit-graph.c:245
+msgid "Collecting commits from input"
+msgstr "Sammle Commits von der Standard-Eingabe"
 
 #: builtin/commit-tree.c:18
 msgid ""
@@ -13145,7 +13259,7 @@
 msgstr "Version"
 
 #: builtin/commit.c:1376 builtin/commit.c:1535 builtin/push.c:549
-#: builtin/worktree.c:646
+#: builtin/worktree.c:722
 msgid "machine-readable output"
 msgstr "maschinenlesbare Ausgabe"
 
@@ -13158,8 +13272,8 @@
 msgstr "Einträge mit NUL-Zeichen abschließen"
 
 #: builtin/commit.c:1384 builtin/commit.c:1388 builtin/commit.c:1543
-#: builtin/fast-export.c:1153 builtin/fast-export.c:1156
-#: builtin/fast-export.c:1159 builtin/rebase.c:1392 parse-options.h:336
+#: builtin/fast-export.c:1199 builtin/fast-export.c:1202
+#: builtin/fast-export.c:1205 builtin/rebase.c:1392 parse-options.h:336
 msgid "mode"
 msgstr "Modus"
 
@@ -13587,7 +13701,7 @@
 "#\tname = %s\n"
 "#\temail = %s\n"
 msgstr ""
-"# Das ist Git's benutzerspezifische Konfigurationsdatei.\n"
+"# Das ist Gits benutzerspezifische Konfigurationsdatei.\n"
 "[user]\n"
 "# Bitte passen Sie die folgenden Zeilen an und kommentieren Sie diese aus:\n"
 "#\tname = %s\n"
@@ -13857,35 +13971,45 @@
 msgid "--broken is incompatible with commit-ishes"
 msgstr "Die Option --broken kann nicht mit Commits verwendet werden."
 
-#: builtin/diff.c:84
+#: builtin/diff.c:91
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s': keine reguläre Datei oder symbolische Verknüpfung"
 
-#: builtin/diff.c:235
+#: builtin/diff.c:242
 #, c-format
 msgid "invalid option: %s"
 msgstr "Ungültige Option: %s"
 
-#: builtin/diff.c:350
+#: builtin/diff.c:359
+#, c-format
+msgid "%s...%s: no merge base"
+msgstr "%s...%s: keine Merge-Basis"
+
+#: builtin/diff.c:469
 msgid "Not a git repository"
 msgstr "Kein Git-Repository"
 
-#: builtin/diff.c:394
+#: builtin/diff.c:514
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "Objekt '%s' ist ungültig."
 
-#: builtin/diff.c:403
+#: builtin/diff.c:525
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "Mehr als zwei Blobs angegeben: '%s'"
 
-#: builtin/diff.c:408
+#: builtin/diff.c:530
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "unbehandeltes Objekt '%s' angegeben"
 
+#: builtin/diff.c:564
+#, c-format
+msgid "%s...%s: multiple merge bases, using %s"
+msgstr "%s...%s: mehrere Merge-Basen, nutze %s"
+
 #: builtin/difftool.c:30
 msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
 msgstr "git difftool [<Optionen>] [<Commit> [<Commit>]] [--] [<Pfad>...]"
@@ -14038,89 +14162,110 @@
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-opts]"
 
-#: builtin/fast-export.c:853
+#: builtin/fast-export.c:868
 msgid "Error: Cannot export nested tags unless --mark-tags is specified."
 msgstr ""
 "Fehler: Verschachtelte Tags können nicht exportiert werden, außer --mark-"
 "tags wurde angegeben."
 
-#: builtin/fast-export.c:1152
+#: builtin/fast-export.c:1178
+msgid "--anonymize-map token cannot be empty"
+msgstr "Token für --anonymize-map kann nicht leer sein"
+
+#: builtin/fast-export.c:1198
 msgid "show progress after <n> objects"
 msgstr "Fortschritt nach <n> Objekten anzeigen"
 
-#: builtin/fast-export.c:1154
+#: builtin/fast-export.c:1200
 msgid "select handling of signed tags"
 msgstr "Behandlung von signierten Tags wählen"
 
-#: builtin/fast-export.c:1157
+#: builtin/fast-export.c:1203
 msgid "select handling of tags that tag filtered objects"
 msgstr "Behandlung von Tags wählen, die gefilterte Objekte markieren"
 
-#: builtin/fast-export.c:1160
+#: builtin/fast-export.c:1206
 msgid "select handling of commit messages in an alternate encoding"
 msgstr ""
 "Auswählen der Behandlung von Commit-Beschreibungen bei wechselndem Encoding"
 
-#: builtin/fast-export.c:1163
+#: builtin/fast-export.c:1209
 msgid "Dump marks to this file"
 msgstr "Markierungen in diese Datei schreiben"
 
-#: builtin/fast-export.c:1165
+#: builtin/fast-export.c:1211
 msgid "Import marks from this file"
 msgstr "Markierungen von dieser Datei importieren"
 
-#: builtin/fast-export.c:1169
+#: builtin/fast-export.c:1215
 msgid "Import marks from this file if it exists"
 msgstr "Markierungen von dieser Datei importieren, wenn diese existiert"
 
-#: builtin/fast-export.c:1171
+#: builtin/fast-export.c:1217
 msgid "Fake a tagger when tags lack one"
 msgstr "künstlich einen Tag-Ersteller erzeugen, wenn das Tag keinen hat"
 
-#: builtin/fast-export.c:1173
+#: builtin/fast-export.c:1219
 msgid "Output full tree for each commit"
 msgstr "für jeden Commit das gesamte Verzeichnis ausgeben"
 
-#: builtin/fast-export.c:1175
+#: builtin/fast-export.c:1221
 msgid "Use the done feature to terminate the stream"
 msgstr "die \"done\"-Funktion benutzen, um den Datenstrom abzuschließen"
 
-#: builtin/fast-export.c:1176
+#: builtin/fast-export.c:1222
 msgid "Skip output of blob data"
 msgstr "Ausgabe von Blob-Daten überspringen"
 
-#: builtin/fast-export.c:1177 builtin/log.c:1724
+#: builtin/fast-export.c:1223 builtin/log.c:1724
 msgid "refspec"
 msgstr "Refspec"
 
-#: builtin/fast-export.c:1178
+#: builtin/fast-export.c:1224
 msgid "Apply refspec to exported refs"
 msgstr "Refspec auf exportierte Referenzen anwenden"
 
-#: builtin/fast-export.c:1179
+#: builtin/fast-export.c:1225
 msgid "anonymize output"
 msgstr "Ausgabe anonymisieren"
 
-#: builtin/fast-export.c:1181
+#: builtin/fast-export.c:1226
+msgid "from:to"
+msgstr "von:nach"
+
+#: builtin/fast-export.c:1227
+msgid "convert <from> to <to> in anonymized output"
+msgstr "konvertiere <von> zu <nach> in anonymisierter Ausgabe"
+
+#: builtin/fast-export.c:1230
 msgid "Reference parents which are not in fast-export stream by object id"
 msgstr ""
 "Eltern, die nicht im Fast-Export-Stream sind, anhand ihrer Objekt-ID "
 "referenzieren"
 
-#: builtin/fast-export.c:1183
+#: builtin/fast-export.c:1232
 msgid "Show original object ids of blobs/commits"
 msgstr "originale Objekt-IDs von Blobs/Commits anzeigen"
 
-#: builtin/fast-export.c:1185
+#: builtin/fast-export.c:1234
 msgid "Label tags with mark ids"
 msgstr "Tags mit Markierungs-IDs beschriften"
 
-#: builtin/fast-export.c:1220
+#: builtin/fast-export.c:1257
+msgid "--anonymize-map without --anonymize does not make sense"
+msgstr "--anonymize-map ohne --anonymize ist nicht sinnvoll"
+
+#: builtin/fast-export.c:1272
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
 msgstr ""
 "--import-marks und --import-marks-if-exists können nicht zusammen "
 "weitergegeben werden"
 
+#: builtin/fetch-pack.c:245
+#, c-format
+msgid "Lockfile created but not reported: %s"
+msgstr "Lock-Datei erstellt, aber nicht gemeldet: %s"
+
 #: builtin/fetch.c:35
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<Optionen>] [<Repository> [<Refspec>...]]"
@@ -14461,45 +14606,45 @@
 msgid "You need to specify a tag name."
 msgstr "Sie müssen den Namen des Tags angeben."
 
-#: builtin/fetch.c:1773
+#: builtin/fetch.c:1778
 msgid "Negative depth in --deepen is not supported"
 msgstr "Negative Tiefe wird von --deepen nicht unterstützt."
 
-#: builtin/fetch.c:1775
+#: builtin/fetch.c:1780
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen und --depth schließen sich gegenseitig aus"
 
-#: builtin/fetch.c:1780
+#: builtin/fetch.c:1785
 msgid "--depth and --unshallow cannot be used together"
 msgstr ""
 "Die Optionen --depth und --unshallow können nicht gemeinsam verwendet werden."
 
-#: builtin/fetch.c:1782
+#: builtin/fetch.c:1787
 msgid "--unshallow on a complete repository does not make sense"
 msgstr ""
 "Die Option --unshallow kann nicht in einem Repository mit vollständiger "
 "Historie verwendet werden."
 
-#: builtin/fetch.c:1798
+#: builtin/fetch.c:1800
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all akzeptiert kein Repository als Argument"
 
-#: builtin/fetch.c:1800
+#: builtin/fetch.c:1802
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all kann nicht mit Refspecs verwendet werden."
 
-#: builtin/fetch.c:1809
+#: builtin/fetch.c:1811
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Kein Remote-Repository (einzeln oder Gruppe): %s"
 
-#: builtin/fetch.c:1816
+#: builtin/fetch.c:1818
 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:1834
+#: builtin/fetch.c:1836
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14961,8 +15106,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1730
-#: builtin/pack-objects.c:2855
+#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1727
+#: builtin/pack-objects.c:2904
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "keine Unterstützung von Threads, '%s' wird ignoriert"
@@ -15195,11 +15340,11 @@
 msgid "invalid option combination, ignoring --threads"
 msgstr "Ungültige Kombination von Optionen, --threads wird ignoriert."
 
-#: builtin/grep.c:1084 builtin/pack-objects.c:3548
+#: builtin/grep.c:1084 builtin/pack-objects.c:3623
 msgid "no threads support, ignoring --threads"
 msgstr "Keine Unterstützung für Threads, --threads wird ignoriert."
 
-#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2852
+#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2901
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "ungültige Anzahl von Threads angegeben (%d)"
@@ -15406,7 +15551,7 @@
 msgid "used more bytes than were available"
 msgstr "verwendete mehr Bytes als verfügbar waren"
 
-#: builtin/index-pack.c:288 builtin/pack-objects.c:607
+#: builtin/index-pack.c:288 builtin/pack-objects.c:618
 msgid "pack too large for current definition of off_t"
 msgstr "Paket ist zu groß für die aktuelle Definition von off_t"
 
@@ -15478,8 +15623,8 @@
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "SHA1 KOLLISION MIT %s GEFUNDEN !"
 
-#: builtin/index-pack.c:738 builtin/pack-objects.c:159
-#: builtin/pack-objects.c:219 builtin/pack-objects.c:314
+#: builtin/index-pack.c:738 builtin/pack-objects.c:170
+#: builtin/pack-objects.c:230 builtin/pack-objects.c:325
 #, c-format
 msgid "unable to read %s"
 msgstr "kann %s nicht lesen"
@@ -15540,7 +15685,7 @@
 msgid "Resolving deltas"
 msgstr "Löse Unterschiede auf"
 
-#: builtin/index-pack.c:1208 builtin/pack-objects.c:2616
+#: builtin/index-pack.c:1208 builtin/pack-objects.c:2665
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "kann Thread nicht erzeugen: %s"
@@ -15605,58 +15750,67 @@
 msgid "cannot store index file"
 msgstr "Kann Indexdatei nicht speichern"
 
-#: builtin/index-pack.c:1528 builtin/pack-objects.c:2863
+#: builtin/index-pack.c:1528 builtin/pack-objects.c:2912
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "\"pack.indexversion=%<PRIu32>\" ist ungültig"
 
-#: builtin/index-pack.c:1596
+#: builtin/index-pack.c:1592
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Kann existierende Paketdatei '%s' nicht öffnen"
 
-#: builtin/index-pack.c:1598
+#: builtin/index-pack.c:1594
 #, 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:1646
+#: builtin/index-pack.c:1642
 #, 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:1653
+#: builtin/index-pack.c:1649
 #, 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:1692
+#: builtin/index-pack.c:1689
 msgid "Cannot come back to cwd"
 msgstr "Kann nicht zurück zum Arbeitsverzeichnis wechseln"
 
-#: builtin/index-pack.c:1741 builtin/index-pack.c:1744
-#: builtin/index-pack.c:1760 builtin/index-pack.c:1764
+#: builtin/index-pack.c:1738 builtin/index-pack.c:1741
+#: builtin/index-pack.c:1757 builtin/index-pack.c:1761
 #, c-format
 msgid "bad %s"
 msgstr "%s ist ungültig"
 
-#: builtin/index-pack.c:1780
+#: builtin/index-pack.c:1767 builtin/init-db.c:392 builtin/init-db.c:621
+#, c-format
+msgid "unknown hash algorithm '%s'"
+msgstr "unbekannter Hash-Algorithmus '%s'"
+
+#: builtin/index-pack.c:1782
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "Die Option --fix-thin kann nicht ohne --stdin verwendet werden."
 
-#: builtin/index-pack.c:1782
+#: builtin/index-pack.c:1784
 msgid "--stdin requires a git repository"
 msgstr "--stdin erfordert ein Git-Repository"
 
-#: builtin/index-pack.c:1788
+#: builtin/index-pack.c:1786
+msgid "--object-format cannot be used with --stdin"
+msgstr "Die Option --object-format kann nicht mit --stdin verwendet werden."
+
+#: builtin/index-pack.c:1792
 msgid "--verify with no packfile name given"
 msgstr "Die Option --verify wurde ohne Namen der Paketdatei angegeben."
 
-#: builtin/index-pack.c:1836 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1840 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "fsck Fehler beim Packen von Objekten"
 
@@ -15700,51 +15854,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "kopiere keine Vorlagen von '%s': %s"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:276
+#, c-format
+msgid "invalid initial branch name: '%s'"
+msgstr "ungültiger initialer Branchname: '%s'"
+
+#: builtin/init-db.c:368
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "kann nicht mit Dateityp %d umgehen"
 
-#: builtin/init-db.c:359
+#: builtin/init-db.c:371
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "Konnte %s nicht nach %s verschieben"
 
-#: builtin/init-db.c:374
+#: builtin/init-db.c:386
 msgid "attempt to reinitialize repository with different hash"
 msgstr "Versuch, das Repository mit einem anderen Hash zu reinitialisieren"
 
-#: builtin/init-db.c:380 builtin/init-db.c:601
-#, c-format
-msgid "unknown hash algorithm '%s'"
-msgstr "unbekannter Hash-Algorithmus '%s'"
-
-#: builtin/init-db.c:397 builtin/init-db.c:400
+#: builtin/init-db.c:410 builtin/init-db.c:413
 #, c-format
 msgid "%s already exists"
 msgstr "%s existiert bereits"
 
-#: builtin/init-db.c:458
+#: builtin/init-db.c:444
+#, c-format
+msgid "re-init: ignored --initial-branch=%s"
+msgstr "Neu-Initialisierung: --initial-branch=%s ignoriert"
+
+#: builtin/init-db.c:475
 #, 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:459
+#: builtin/init-db.c:476
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "Bestehendes Git-Repository in %s%s neuinitialisiert\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:480
 #, 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:464
+#: builtin/init-db.c:481
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "Leeres Git-Repository in %s%s initialisiert\n"
 
-#: builtin/init-db.c:513
+#: builtin/init-db.c:530
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -15752,33 +15911,37 @@
 "git init [-q | --quiet] [--bare] [--template=<Vorlagenverzeichnis>] [--"
 "shared[=<Berechtigungen>]] [<Verzeichnis>]"
 
-#: builtin/init-db.c:538
+#: builtin/init-db.c:556
 msgid "permissions"
 msgstr "Berechtigungen"
 
-#: builtin/init-db.c:539
+#: builtin/init-db.c:557
 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:544
+#: builtin/init-db.c:563
+msgid "override the name of the initial branch"
+msgstr "den Namen des initialen Branches überschreiben"
+
+#: builtin/init-db.c:564
 msgid "hash"
 msgstr "Hash"
 
-#: builtin/init-db.c:545
+#: builtin/init-db.c:565 builtin/show-index.c:22
 msgid "specify the hash algorithm to use"
 msgstr "den zu verwendenen Hash-Algorithmus angeben"
 
-#: builtin/init-db.c:578 builtin/init-db.c:583
+#: builtin/init-db.c:598 builtin/init-db.c:603
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "kann Verzeichnis %s nicht erstellen"
 
-#: builtin/init-db.c:587
+#: builtin/init-db.c:607
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "kann nicht in Verzeichnis %s wechseln"
 
-#: builtin/init-db.c:614
+#: builtin/init-db.c:634
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -15787,7 +15950,7 @@
 "%s (oder --work-tree=<Verzeichnis>) nicht erlaubt ohne Spezifizierung von %s "
 "(oder --git-dir=<Verzeichnis>)"
 
-#: builtin/init-db.c:642
+#: builtin/init-db.c:662
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "Kann nicht auf Arbeitsverzeichnis '%s' zugreifen."
@@ -17567,7 +17730,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:164
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
 msgid "do not remove, show only"
 msgstr "nicht löschen, nur anzeigen"
 
@@ -17602,357 +17765,384 @@
 "git pack-objects [<Optionen>...] <Basis-Name> [< <Referenzliste> | < "
 "<Objektliste>]"
 
-#: builtin/pack-objects.c:431
+#: builtin/pack-objects.c:442
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "Ungültiges CRC für gepacktes Objekt %s."
 
-#: builtin/pack-objects.c:442
+#: builtin/pack-objects.c:453
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "Fehlerhaftes gepacktes Objekt für %s."
 
-#: builtin/pack-objects.c:573
+#: builtin/pack-objects.c:584
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "Rekursiver Unterschied für Objekt %s festgestellt."
 
-#: builtin/pack-objects.c:784
+#: builtin/pack-objects.c:795
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "%u Objekte geordnet, %<PRIu32> erwartet."
 
-#: builtin/pack-objects.c:973
+#: builtin/pack-objects.c:1003
 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:986
+#: builtin/pack-objects.c:1016
 msgid "Writing objects"
 msgstr "Schreibe Objekte"
 
-#: builtin/pack-objects.c:1047 builtin/update-index.c:90
+#: builtin/pack-objects.c:1077 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "Konnte '%s' nicht lesen"
 
-#: builtin/pack-objects.c:1100
+#: builtin/pack-objects.c:1130
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "Schrieb %<PRIu32> Objekte während %<PRIu32> erwartet waren."
 
-#: builtin/pack-objects.c:1298
+#: builtin/pack-objects.c:1347
 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:1725
+#: builtin/pack-objects.c:1774
 #, 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:1734
+#: builtin/pack-objects.c:1783
 #, 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:2005
+#: builtin/pack-objects.c:2054
 msgid "Counting objects"
 msgstr "Zähle Objekte"
 
-#: builtin/pack-objects.c:2150
+#: builtin/pack-objects.c:2199
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "Konnte Kopfbereich von Objekt '%s' nicht parsen."
 
-#: builtin/pack-objects.c:2220 builtin/pack-objects.c:2236
-#: builtin/pack-objects.c:2246
+#: builtin/pack-objects.c:2269 builtin/pack-objects.c:2285
+#: builtin/pack-objects.c:2295
 #, c-format
 msgid "object %s cannot be read"
 msgstr "Objekt %s kann nicht gelesen werden."
 
-#: builtin/pack-objects.c:2223 builtin/pack-objects.c:2250
+#: builtin/pack-objects.c:2272 builtin/pack-objects.c:2299
 #, 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:2260
+#: builtin/pack-objects.c:2309
 msgid "suboptimal pack - out of memory"
 msgstr "ungünstiges Packet - Speicher voll"
 
-#: builtin/pack-objects.c:2575
+#: builtin/pack-objects.c:2624
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Delta-Kompression verwendet bis zu %d Threads."
 
-#: builtin/pack-objects.c:2714
+#: builtin/pack-objects.c:2763
 #, 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:2802
+#: builtin/pack-objects.c:2851
 msgid "Compressing objects"
 msgstr "Komprimiere Objekte"
 
-#: builtin/pack-objects.c:2808
+#: builtin/pack-objects.c:2857
 msgid "inconsistency with delta count"
 msgstr "Inkonsistenz mit der Anzahl von Deltas"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2929
+#, c-format
+msgid ""
+"value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
+"hash> <uri>' (got '%s')"
+msgstr ""
+"Wert für uploadpack.blobpackfileuri muss in der Form '<Objekt-Hash> <Pack-"
+"Hash> <URI>' vorliegen ('%s' erhalten)"
+
+#: builtin/pack-objects.c:2932
+#, c-format
+msgid ""
+"object already configured in another uploadpack.blobpackfileuri (got '%s')"
+msgstr ""
+"Objekt bereits in einem anderen uploadpack.blobpackfileuri konfiguriert "
+"('%s' erhalten)"
+
+#: builtin/pack-objects.c:2961
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
 " %s"
 msgstr ""
-"Erwartete Randobjekt-ID, erhielt nutzlose Daten:\n"
+"erwartete Randobjekt-ID, erhielt nutzlose Daten:\n"
 " %s"
 
-#: builtin/pack-objects.c:2895
+#: builtin/pack-objects.c:2967
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
 " %s"
 msgstr ""
-"Erwartete Objekt-ID, erhielt nutzlose Daten:\n"
+"erwartete Objekt-ID, erhielt nutzlose Daten:\n"
 " %s"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3065
 msgid "invalid value for --missing"
-msgstr "Ungültiger Wert für --missing."
+msgstr "ungültiger Wert für --missing"
 
-#: builtin/pack-objects.c:3052 builtin/pack-objects.c:3160
+#: builtin/pack-objects.c:3124 builtin/pack-objects.c:3232
 msgid "cannot open pack index"
-msgstr "Kann Paketindex nicht öffnen."
+msgstr "kann Paketindex nicht öffnen"
 
-#: builtin/pack-objects.c:3083
+#: builtin/pack-objects.c:3155
 #, c-format
 msgid "loose object at %s could not be examined"
-msgstr "Loses Objekt bei %s konnte nicht untersucht werden."
+msgstr "loses Objekt bei %s konnte nicht untersucht werden"
 
-#: builtin/pack-objects.c:3168
+#: builtin/pack-objects.c:3240
 msgid "unable to force loose object"
-msgstr "Konnte loses Objekt nicht erzwingen."
+msgstr "konnte loses Objekt nicht erzwingen"
 
-#: builtin/pack-objects.c:3261
+#: builtin/pack-objects.c:3333
 #, c-format
 msgid "not a rev '%s'"
-msgstr "'%s' ist kein Commit."
+msgstr "'%s' ist kein Commit"
 
-#: builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3336
 #, c-format
 msgid "bad revision '%s'"
-msgstr "Ungültiger Commit '%s'."
+msgstr "ungültiger Commit '%s'"
 
-#: builtin/pack-objects.c:3289
+#: builtin/pack-objects.c:3361
 msgid "unable to add recent objects"
-msgstr "Konnte jüngste Objekte nicht hinzufügen."
+msgstr "konnte neuere Objekte nicht hinzufügen"
 
-#: builtin/pack-objects.c:3342
+#: builtin/pack-objects.c:3414
 #, c-format
 msgid "unsupported index version %s"
-msgstr "Nicht unterstützte Index-Version %s"
+msgstr "nicht unterstützte Index-Version %s"
 
-#: builtin/pack-objects.c:3346
+#: builtin/pack-objects.c:3418
 #, c-format
 msgid "bad index version '%s'"
-msgstr "Ungültige Index-Version '%s'"
+msgstr "ungültige Index-Version '%s'"
 
-#: builtin/pack-objects.c:3384
+#: builtin/pack-objects.c:3456
 msgid "<version>[,<offset>]"
 msgstr "<Version>[,<Offset>]"
 
-#: builtin/pack-objects.c:3385
+#: builtin/pack-objects.c:3457
 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:3388
+#: builtin/pack-objects.c:3460
 msgid "maximum size of each output pack file"
 msgstr "maximale Größe für jede ausgegebene Paketdatei"
 
-#: builtin/pack-objects.c:3390
+#: builtin/pack-objects.c:3462
 msgid "ignore borrowed objects from alternate object store"
 msgstr "geliehene Objekte von alternativem Objektspeicher ignorieren"
 
-#: builtin/pack-objects.c:3392
+#: builtin/pack-objects.c:3464
 msgid "ignore packed objects"
 msgstr "gepackte Objekte ignorieren"
 
-#: builtin/pack-objects.c:3394
+#: builtin/pack-objects.c:3466
 msgid "limit pack window by objects"
 msgstr "Paketfenster durch Objekte begrenzen"
 
-#: builtin/pack-objects.c:3396
+#: builtin/pack-objects.c:3468
 msgid "limit pack window by memory in addition to object limit"
 msgstr ""
 "Paketfenster, zusätzlich zur Objektbegrenzung, durch Speicher begrenzen"
 
-#: builtin/pack-objects.c:3398
+#: builtin/pack-objects.c:3470
 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:3400
+#: builtin/pack-objects.c:3472
 msgid "reuse existing deltas"
 msgstr "existierende Unterschiede wiederverwenden"
 
-#: builtin/pack-objects.c:3402
+#: builtin/pack-objects.c:3474
 msgid "reuse existing objects"
 msgstr "existierende Objekte wiederverwenden"
 
-#: builtin/pack-objects.c:3404
+#: builtin/pack-objects.c:3476
 msgid "use OFS_DELTA objects"
 msgstr "OFS_DELTA Objekte verwenden"
 
-#: builtin/pack-objects.c:3406
+#: builtin/pack-objects.c:3478
 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:3408
+#: builtin/pack-objects.c:3480
 msgid "do not create an empty pack output"
 msgstr "keine leeren Pakete erzeugen"
 
-#: builtin/pack-objects.c:3410
+#: builtin/pack-objects.c:3482
 msgid "read revision arguments from standard input"
 msgstr "Argumente bezüglich Commits von der Standard-Eingabe lesen"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3484
 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:3415
+#: builtin/pack-objects.c:3487
 msgid "include objects reachable from any reference"
 msgstr "Objekte einschließen, die von jeder Referenz erreichbar sind"
 
-#: builtin/pack-objects.c:3418
+#: builtin/pack-objects.c:3490
 msgid "include objects referred by reflog entries"
 msgstr ""
 "Objekte einschließen, die von Einträgen des Reflogs referenziert werden"
 
-#: builtin/pack-objects.c:3421
+#: builtin/pack-objects.c:3493
 msgid "include objects referred to by the index"
 msgstr "Objekte einschließen, die vom Index referenziert werden"
 
-#: builtin/pack-objects.c:3424
+#: builtin/pack-objects.c:3496
 msgid "output pack to stdout"
 msgstr "Paket in die Standard-Ausgabe schreiben"
 
-#: builtin/pack-objects.c:3426
+#: builtin/pack-objects.c:3498
 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:3428
+#: builtin/pack-objects.c:3500
 msgid "keep unreachable objects"
 msgstr "nicht erreichbare Objekte behalten"
 
-#: builtin/pack-objects.c:3430
+#: builtin/pack-objects.c:3502
 msgid "pack loose unreachable objects"
 msgstr "nicht erreichbare lose Objekte packen"
 
-#: builtin/pack-objects.c:3432
+#: builtin/pack-objects.c:3504
 msgid "unpack unreachable objects newer than <time>"
 msgstr "nicht erreichbare Objekte entpacken, die neuer als <Zeit> sind"
 
-#: builtin/pack-objects.c:3435
+#: builtin/pack-objects.c:3507
 msgid "use the sparse reachability algorithm"
 msgstr "den \"sparse\" Algorithmus zur Bestimmung der Erreichbarkeit benutzen"
 
-#: builtin/pack-objects.c:3437
+#: builtin/pack-objects.c:3509
 msgid "create thin packs"
 msgstr "dünnere Pakete erzeugen"
 
-#: builtin/pack-objects.c:3439
+#: builtin/pack-objects.c:3511
 msgid "create packs suitable for shallow fetches"
 msgstr ""
 "Pakete geeignet für Abholung mit unvollständiger Historie (shallow) erzeugen"
 
-#: builtin/pack-objects.c:3441
+#: builtin/pack-objects.c:3513
 msgid "ignore packs that have companion .keep file"
 msgstr "Pakete ignorieren, die .keep Dateien haben"
 
-#: builtin/pack-objects.c:3443
+#: builtin/pack-objects.c:3515
 msgid "ignore this pack"
 msgstr "dieses Paket ignorieren"
 
-#: builtin/pack-objects.c:3445
+#: builtin/pack-objects.c:3517
 msgid "pack compression level"
 msgstr "Komprimierungsgrad für Paketierung"
 
-#: builtin/pack-objects.c:3447
+#: builtin/pack-objects.c:3519
 msgid "do not hide commits by grafts"
 msgstr "keine künstlichen Vorgänger-Commits (\"grafts\") verbergen"
 
-#: builtin/pack-objects.c:3449
+#: builtin/pack-objects.c:3521
 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:3451
+#: builtin/pack-objects.c:3523
 msgid "write a bitmap index together with the pack index"
 msgstr "Bitmap-Index zusammen mit Pack-Index schreiben"
 
-#: builtin/pack-objects.c:3455
+#: builtin/pack-objects.c:3527
 msgid "write a bitmap index if possible"
 msgstr "Bitmap-Index schreiben, wenn möglich"
 
-#: builtin/pack-objects.c:3459
+#: builtin/pack-objects.c:3531
 msgid "handling for missing objects"
 msgstr "Behandlung für fehlende Objekte"
 
-#: builtin/pack-objects.c:3462
+#: builtin/pack-objects.c:3534
 msgid "do not pack objects in promisor packfiles"
 msgstr ""
 "keine Objekte aus Packdateien von partiell geklonten Remote-Repositories "
 "packen"
 
-#: builtin/pack-objects.c:3464
+#: builtin/pack-objects.c:3536
 msgid "respect islands during delta compression"
 msgstr "Delta-Islands bei Delta-Kompression beachten"
 
-#: builtin/pack-objects.c:3493
+#: builtin/pack-objects.c:3538
+msgid "protocol"
+msgstr "Protokoll"
+
+#: builtin/pack-objects.c:3539
+msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
+msgstr ""
+"jegliche konfigurierte uploadpack.blobpackfileuri für dieses Protkoll "
+"ausschließen"
+
+#: builtin/pack-objects.c:3568
 #, 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:3498
+#: builtin/pack-objects.c:3573
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit ist zu hoch, erzwinge %d"
 
-#: builtin/pack-objects.c:3552
+#: builtin/pack-objects.c:3627
 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:3554
+#: builtin/pack-objects.c:3629
 msgid "minimum pack size limit is 1 MiB"
 msgstr "Minimales Limit für die Paketgröße ist 1 MiB."
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3634
 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:3562
+#: builtin/pack-objects.c:3637
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable und --unpack-unreachable sind inkompatibel"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3643
 msgid "cannot use --filter without --stdout"
 msgstr "Kann --filter nicht ohne --stdout benutzen."
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3703
 msgid "Enumerating objects"
 msgstr "Objekte aufzählen"
 
-#: builtin/pack-objects.c:3658
+#: builtin/pack-objects.c:3734
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -19292,7 +19482,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <Git-Verzeichnis>"
 
-#: builtin/receive-pack.c:843
+#: builtin/receive-pack.c:844
 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"
@@ -19324,7 +19514,7 @@
 "setzen Sie die Konfigurationsvariable 'receive.denyCurrentBranch' auf\n"
 "'refuse'."
 
-#: builtin/receive-pack.c:863
+#: builtin/receive-pack.c:864
 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"
@@ -19345,11 +19535,11 @@
 "\n"
 "Um diese Meldung zu unterdrücken, setzen Sie die Variable auf 'refuse'."
 
-#: builtin/receive-pack.c:1960
+#: builtin/receive-pack.c:1970
 msgid "quiet"
 msgstr "weniger Ausgaben"
 
-#: builtin/receive-pack.c:1974
+#: builtin/receive-pack.c:1984
 msgid "You must specify a directory."
 msgstr "Sie müssen ein Repository angeben."
 
@@ -20931,6 +21121,14 @@
 msgid "cannot find commit %s (%s)"
 msgstr "kann Commit %s (%s) nicht finden"
 
+#: builtin/show-index.c:21
+msgid "hash-algorithm"
+msgstr "Hash-Algorithmus"
+
+#: builtin/show-index.c:31
+msgid "Unknown hash algorithm"
+msgstr "Unbekannter Hash-Algorithmus"
+
 #: builtin/show-ref.c:12
 msgid ""
 "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
@@ -20986,55 +21184,61 @@
 #: builtin/sparse-checkout.c:64
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr ""
-"Dieses Arbeitsverzeichnis ist nicht partiell (Datei für partieller Checkout "
-"existiert eventuell nicht)."
+"dieses Arbeitsverzeichnis ist nicht partiell (Datei für partieller Checkout "
+"existiert eventuell nicht)"
 
-#: builtin/sparse-checkout.c:212
+#: builtin/sparse-checkout.c:216
 msgid "failed to create directory for sparse-checkout file"
 msgstr ""
 "Fehler beim Erstellen eines Verzeichnisses für Datei eines partiellen "
 "Checkouts"
 
-#: builtin/sparse-checkout.c:253
+#: builtin/sparse-checkout.c:257
+msgid "unable to upgrade repository format to enable worktreeConfig"
+msgstr ""
+"Repository-Format konnte nicht erweitert werden, um worktreeConfig zu "
+"aktivieren"
+
+#: builtin/sparse-checkout.c:259
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "Einstellung für extensions.worktreeConfig konnte nicht gesetzt werden"
 
-#: builtin/sparse-checkout.c:270
+#: builtin/sparse-checkout.c:276
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:289
+#: builtin/sparse-checkout.c:295
 msgid "initialize the sparse-checkout in cone mode"
-msgstr "Initialisiere den partiellen Checkout im Cone-Modus"
+msgstr "initialisiere den partiellen Checkout im Cone-Modus"
 
-#: builtin/sparse-checkout.c:326
+#: builtin/sparse-checkout.c:332
 #, c-format
 msgid "failed to open '%s'"
 msgstr "Fehler beim Öffnen von '%s'"
 
-#: builtin/sparse-checkout.c:383
+#: builtin/sparse-checkout.c:389
 #, c-format
 msgid "could not normalize path %s"
 msgstr "konnte Pfad '%s' nicht normalisieren"
 
-#: builtin/sparse-checkout.c:395
+#: builtin/sparse-checkout.c:401
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <Muster>)"
 
-#: builtin/sparse-checkout.c:420
+#: builtin/sparse-checkout.c:426
 #, 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:474 builtin/sparse-checkout.c:498
+#: builtin/sparse-checkout.c:480 builtin/sparse-checkout.c:504
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "konnte die existierenden Muster des partiellen Checkouts nicht laden"
 
-#: builtin/sparse-checkout.c:543
+#: builtin/sparse-checkout.c:549
 msgid "read patterns from standard in"
 msgstr "Muster von der Standard-Eingabe lesen"
 
-#: builtin/sparse-checkout.c:580
+#: builtin/sparse-checkout.c:586
 msgid "error while refreshing working directory"
 msgstr "Fehler während der Aktualisierung des Arbeitsverzeichnisses."
 
@@ -21757,12 +21961,38 @@
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <Pfad> <neue URL>"
 
-#: builtin/submodule--helper.c:2323 git.c:436 git.c:683
+#: builtin/submodule--helper.c:2294
+msgid "set the default tracking branch to master"
+msgstr "Standard-Tracking-Branch auf master setzen"
+
+#: builtin/submodule--helper.c:2296
+msgid "set the default tracking branch"
+msgstr "Standard-Tracking-Branch setzen"
+
+#: builtin/submodule--helper.c:2300
+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:2301
+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:2308
+msgid "--branch or --default required"
+msgstr "Option --branch oder --default erforderlich"
+
+#: builtin/submodule--helper.c:2311
+msgid "--branch and --default are mutually exclusive"
+msgstr "--branch und --default schließen sich gegenseitig aus"
+
+#: builtin/submodule--helper.c:2367 git.c:436 git.c:683
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s unterstützt kein --super-prefix"
 
-#: builtin/submodule--helper.c:2329
+#: builtin/submodule--helper.c:2373
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' ist kein gültiger Unterbefehl von submodule--helper"
@@ -22418,206 +22648,198 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <Pfad>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:894
+#: builtin/worktree.c:60 builtin/worktree.c:972
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "Fehler beim Löschen von '%s'"
 
-#: builtin/worktree.c:79
-#, c-format
-msgid "Removing worktrees/%s: not a valid directory"
-msgstr "Lösche worktrees/%s: kein gültiges Verzeichnis"
-
 #: builtin/worktree.c:85
-#, c-format
-msgid "Removing worktrees/%s: gitdir file does not exist"
-msgstr "Lösche worktrees/%s: gitdir-Datei existiert nicht"
+msgid "not a valid directory"
+msgstr "kein gültiges Verzeichnis"
 
-#: builtin/worktree.c:90 builtin/worktree.c:99
-#, c-format
-msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
-msgstr "Lösche worktrees/%s: konnte gitdir-Datei (%s) nicht lesen"
+#: builtin/worktree.c:91
+msgid "gitdir file does not exist"
+msgstr "gitdir-Datei existiert nicht"
 
-#: builtin/worktree.c:109
+#: builtin/worktree.c:96 builtin/worktree.c:105
 #, c-format
-msgid ""
-"Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
-"%<PRIuMAX>)"
-msgstr ""
-"Lösche worktrees/%s: read() zu kurz (%<PRIuMAX> Bytes erwartet, %<PRIuMAX> "
-"gelesen)"
+msgid "unable to read gitdir file (%s)"
+msgstr "konnte gitdir-Datei nicht lesen (%s)"
 
-#: builtin/worktree.c:117
+#: builtin/worktree.c:115
 #, c-format
-msgid "Removing worktrees/%s: invalid gitdir file"
-msgstr "Lösche worktrees/%s: ungültige gitdir-Datei"
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "read() zu kurz (%<PRIuMAX> Bytes erwartet, %<PRIuMAX> gelesen)"
 
-#: builtin/worktree.c:126
+#: builtin/worktree.c:123
+msgid "invalid gitdir file"
+msgstr "ungültige gitdir-Datei"
+
+#: builtin/worktree.c:131
+msgid "gitdir file points to non-existent location"
+msgstr "gitdir-Datei verweist auf nicht existierenden Ort"
+
+#: builtin/worktree.c:146
 #, c-format
-msgid "Removing worktrees/%s: gitdir file points to non-existent location"
-msgstr "Lösche worktrees/%s: gitdir-Datei verweist auf nicht existierenden Ort"
+msgid "Removing %s/%s: %s"
+msgstr "Entferne %s/%s: %s"
 
-#: builtin/worktree.c:165
+#: builtin/worktree.c:221
 msgid "report pruned working trees"
 msgstr "entfernte Arbeitsverzeichnisse ausgeben"
 
-#: builtin/worktree.c:167
+#: builtin/worktree.c:223
 msgid "expire working trees older than <time>"
 msgstr "Arbeitsverzeichnisse älter als <Zeit> verfallen lassen"
 
-#: builtin/worktree.c:234
+#: builtin/worktree.c:293
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' existiert bereits"
 
-#: builtin/worktree.c:244
+#: builtin/worktree.c:302
 #, c-format
-msgid "unable to re-add worktree '%s'"
-msgstr "Konnte Arbeitsverzeichnis '%s' nicht neu hinzufügen."
+msgid "unusable worktree destination '%s'"
+msgstr "nicht nutzbares Ziel des Arbeitsverzeichnisses '%s'"
 
-#: builtin/worktree.c:249
+#: builtin/worktree.c:307
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
-"use 'add -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
+"use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
 "'%s' ist ein fehlendes, aber gesperrtes Arbeitsverzeichnis;\n"
-"Benutzen Sie 'add -f -f' zum Überschrieben, oder 'unlock' und 'prune'\n"
+"Benutzen Sie '%s -f -f' zum Überschreiben, oder 'unlock' und 'prune'\n"
 "oder 'remove' zum Löschen."
 
-#: builtin/worktree.c:251
+#: builtin/worktree.c:309
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
-"use 'add -f' to override, or 'prune' or 'remove' to clear"
+"use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
 "'%s' ist ein fehlendes, aber bereits registriertes Arbeitsverzeichnis;\n"
-"Benutzen Sie 'add -f' zum Überschreiben, oder 'prune' oder 'remove' zum\n"
+"Benutzen Sie '%s -f' zum Überschreiben, oder 'prune' oder 'remove' zum\n"
 "Löschen."
 
-#: builtin/worktree.c:301
+#: builtin/worktree.c:360
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "Konnte Verzeichnis '%s' nicht erstellen."
 
-#: builtin/worktree.c:435 builtin/worktree.c:441
+#: builtin/worktree.c:494 builtin/worktree.c:500
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Bereite Arbeitsverzeichnis vor (neuer Branch '%s')"
 
-#: builtin/worktree.c:437
+#: builtin/worktree.c:496
 #, 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:446
+#: builtin/worktree.c:505
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Bereite Arbeitsverzeichnis vor (checke '%s' aus)"
 
-#: builtin/worktree.c:452
+#: builtin/worktree.c:511
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Bereite Arbeitsverzeichnis vor (losgelöster HEAD %s)"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:552
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr ""
 "<Branch> auschecken, auch wenn dieser bereits in einem anderen "
 "Arbeitsverzeichnis ausgecheckt ist"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:555
 msgid "create a new branch"
 msgstr "neuen Branch erstellen"
 
-#: builtin/worktree.c:498
+#: builtin/worktree.c:557
 msgid "create or reset a branch"
 msgstr "Branch erstellen oder umsetzen"
 
-#: builtin/worktree.c:500
+#: builtin/worktree.c:559
 msgid "populate the new working tree"
 msgstr "das neue Arbeitsverzeichnis auschecken"
 
-#: builtin/worktree.c:501
+#: builtin/worktree.c:560
 msgid "keep the new working tree locked"
 msgstr "das neue Arbeitsverzeichnis gesperrt lassen"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:563
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "Modus zum Folgen von Branches einstellen (siehe git-branch(1))"
 
-#: builtin/worktree.c:507
+#: builtin/worktree.c:566
 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:515
+#: builtin/worktree.c:574
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B und --detach schließen sich gegenseitig aus"
 
-#: builtin/worktree.c:576
+#: builtin/worktree.c:635
 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:676
+#: builtin/worktree.c:755
 msgid "reason for locking"
 msgstr "Sperrgrund"
 
-#: builtin/worktree.c:688 builtin/worktree.c:721 builtin/worktree.c:795
-#: builtin/worktree.c:922
+#: builtin/worktree.c:767 builtin/worktree.c:800 builtin/worktree.c:874
+#: builtin/worktree.c:1000
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' ist kein Arbeitsverzeichnis"
 
-#: builtin/worktree.c:690 builtin/worktree.c:723
+#: builtin/worktree.c:769 builtin/worktree.c:802
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Das Hauptarbeitsverzeichnis kann nicht gesperrt oder entsperrt werden."
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:774
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' ist bereits gesperrt, Grund: %s"
 
-#: builtin/worktree.c:697
+#: builtin/worktree.c:776
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' ist bereits gesperrt"
 
-#: builtin/worktree.c:725
+#: builtin/worktree.c:804
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' ist nicht gesperrt"
 
-#: builtin/worktree.c:766
+#: builtin/worktree.c:845
 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:774
+#: builtin/worktree.c:853
 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:797 builtin/worktree.c:924
+#: builtin/worktree.c:876 builtin/worktree.c:1002
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' ist ein Hauptarbeitsverzeichnis"
 
-#: builtin/worktree.c:802
+#: builtin/worktree.c:881
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "Konnte Zielname aus '%s' nicht bestimmen."
 
-#: builtin/worktree.c:808
-#, c-format
-msgid "target '%s' already exists"
-msgstr "Ziel '%s' existiert bereits."
-
-#: builtin/worktree.c:816
+#: builtin/worktree.c:894
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -22627,7 +22849,7 @@
 "Benutzen Sie 'move -f -f' zum Überschreiben oder entsperren Sie zuerst\n"
 "das Arbeitsverzeichnis."
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:896
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -22636,40 +22858,40 @@
 "Benutzen Sie 'move -f -f' zum Überschreiben oder entsperren Sie zuerst\n"
 "das Arbeitsverzeichnis."
 
-#: builtin/worktree.c:821
+#: builtin/worktree.c:899
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "Validierung fehlgeschlagen, kann Arbeitszeichnis nicht verschieben: %s"
 
-#: builtin/worktree.c:826
+#: builtin/worktree.c:904
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "Fehler beim Verschieben von '%s' nach '%s'"
 
-#: builtin/worktree.c:874
+#: builtin/worktree.c:952
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "Fehler beim Ausführen von 'git status' auf '%s'"
 
-#: builtin/worktree.c:878
+#: builtin/worktree.c:956
 #, 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:883
+#: builtin/worktree.c:961
 #, 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:906
+#: builtin/worktree.c:984
 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:929
+#: builtin/worktree.c:1007
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -22679,7 +22901,7 @@
 "Benutzen Sie 'remove -f -f' zum Überschreiben oder entsperren Sie zuerst\n"
 "das Arbeitsverzeichnis."
 
-#: builtin/worktree.c:931
+#: builtin/worktree.c:1009
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -22688,7 +22910,7 @@
 "Benutzen Sie 'remove -f -f' zum Überschreiben oder entsperren Sie zuerst\n"
 "das Arbeitsverzeichnis."
 
-#: builtin/worktree.c:934
+#: builtin/worktree.c:1012
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "Validierung fehlgeschlagen, kann Arbeitsverzeichnis nicht löschen: %s"
@@ -22709,32 +22931,32 @@
 msgid "only useful for debugging"
 msgstr "nur nützlich für Fehlersuche"
 
-#: bugreport.c:14
+#: bugreport.c:15
 msgid "git version:\n"
 msgstr "git Version:\n"
 
-#: bugreport.c:20
+#: bugreport.c:21
 #, c-format
 msgid "uname() failed with error '%s' (%d)\n"
 msgstr "uname() ist fehlgeschlagen mit Fehler '%s' (%d)\n"
 
-#: bugreport.c:30
+#: bugreport.c:31
 msgid "compiler info: "
 msgstr "Compiler Info: "
 
-#: bugreport.c:32
+#: bugreport.c:34
 msgid "libc info: "
 msgstr "libc Info: "
 
-#: bugreport.c:74
+#: bugreport.c:80
 msgid "not run from a git repository - no hooks to show\n"
 msgstr "nicht in einem Git-Repository ausgeführt - keine Hooks zum Anzeigen\n"
 
-#: bugreport.c:84
+#: bugreport.c:90
 msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
 msgstr "git bugreport [-o|--output-directory <Datei>] [-s|--suffix <Format>]"
 
-#: bugreport.c:91
+#: bugreport.c:97
 msgid ""
 "Thank you for filling out a Git bug report!\n"
 "Please answer the following questions to help us understand your issue.\n"
@@ -22771,66 +22993,76 @@
 "Bitte überprüfen Sie den restlichen Teil des Fehlerberichts unten.\n"
 "Sie können jede Zeile löschen, die Sie nicht mitteilen möchten.\n"
 
-#: bugreport.c:130
+#: bugreport.c:136
 msgid "specify a destination for the bugreport file"
 msgstr "Speicherort für die Datei des Fehlerberichts angeben"
 
-#: bugreport.c:132
+#: bugreport.c:138
 msgid "specify a strftime format suffix for the filename"
 msgstr "Dateiendung im strftime-Format für den Dateinamen angeben"
 
-#: bugreport.c:156
+#: bugreport.c:162
 #, c-format
 msgid "could not create leading directories for '%s'"
 msgstr "konnte vorangehende Verzeichnisse für '%s' nicht erstellen"
 
-#: bugreport.c:163
+#: bugreport.c:169
 msgid "System Info"
 msgstr "System Info"
 
-#: bugreport.c:166
+#: bugreport.c:172
 msgid "Enabled Hooks"
 msgstr "Aktivierte Hooks"
 
-#: bugreport.c:174
+#: bugreport.c:180
 #, c-format
 msgid "couldn't create a new file at '%s'"
 msgstr "konnte keine neue Datei unter '%s' erstellen"
 
-#: bugreport.c:186
+#: bugreport.c:184
+#, c-format
+msgid "unable to write to %s"
+msgstr "konnte nicht nach %s schreiben"
+
+#: bugreport.c:194
 #, c-format
 msgid "Created new report at '%s'.\n"
 msgstr "Neuer Bericht unter '%s' erstellt.\n"
 
-#: fast-import.c:3085
+#: fast-import.c:3100
 #, c-format
 msgid "Missing from marks for submodule '%s'"
 msgstr "Fehlende 'from'-Markierungen für Submodul '%s'"
 
-#: fast-import.c:3087
+#: fast-import.c:3102
 #, c-format
 msgid "Missing to marks for submodule '%s'"
 msgstr "Fehlende 'to'-Markierungen für Submodul '%s'"
 
-#: fast-import.c:3222
+#: fast-import.c:3237
 #, c-format
 msgid "Expected 'mark' command, got %s"
 msgstr "'mark' Befehl erwartet, '%s' bekommen"
 
-#: fast-import.c:3227
+#: fast-import.c:3242
 #, c-format
 msgid "Expected 'to' command, got %s"
 msgstr "'to' Befehl erwartet, '%s' bekommen"
 
-#: fast-import.c:3317
+#: fast-import.c:3334
 msgid "Expected format name:filename for submodule rewrite option"
 msgstr "Format 'Name:Dateiname' für Submodul-Rewrite-Option erwartet"
 
-#: fast-import.c:3371
+#: fast-import.c:3388
 #, c-format
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "Feature '%s' verboten in Eingabe ohne Option --allow-unsafe-features"
 
+#: http-fetch.c:111
+#, c-format
+msgid "argument to --packfile must be a valid hash (got '%s')"
+msgstr "Argument für --packfile muss ein gültiger Hash sein ('%s' erhalten)"
+
 #: credential-cache--daemon.c:223
 #, c-format
 msgid ""
@@ -23012,31 +23244,31 @@
 "Das Anheften des öffentlichen Schlüssels wird mit cURL < 7.44.0\n"
 "nicht unterstützt."
 
-#: http.c:914
+#: http.c:910
 msgid "CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0"
 msgstr "CURLSSLOPT_NO_REVOKE wird mit cURL < 7.44.0 nicht unterstützt."
 
-#: http.c:993
+#: http.c:989
 msgid "Protocol restrictions not supported with cURL < 7.19.4"
 msgstr "Protokollbeschränkungen werden mit cURL < 7.19.4 nicht unterstützt."
 
-#: http.c:1139
+#: http.c:1132
 #, c-format
 msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
 msgstr "Nicht unterstütztes SSL-Backend '%s'. Unterstützte SSL-Backends:"
 
-#: http.c:1146
+#: http.c:1139
 #, c-format
 msgid "Could not set SSL backend to '%s': cURL was built without SSL backends"
 msgstr ""
 "Konnte SSL-Backend nicht zu '%s' setzen: cURL wurde ohne SSL-Backends gebaut."
 
-#: http.c:1150
+#: http.c:1143
 #, c-format
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "Konnte SSL-Backend nicht zu '%s' setzen: bereits gesetzt"
 
-#: http.c:2032
+#: http.c:2025
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -23047,113 +23279,136 @@
 "  gefragt nach: %s\n"
 "    umgeleitet: %s"
 
-#: remote-curl.c:166
+#: remote-curl.c:168
 #, c-format
 msgid "invalid quoting in push-option value: '%s'"
 msgstr "Ungültiges Quoting beim \"push-option\"-Wert: '%s'"
 
-#: remote-curl.c:263
+#: remote-curl.c:295
 #, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
 msgstr "%sinfo/refs nicht gültig: Ist das ein Git-Repository?"
 
-#: remote-curl.c:364
+#: remote-curl.c:396
 msgid "invalid server response; expected service, got flush packet"
 msgstr "Ungültige Antwort des Servers. Service erwartet, Flush-Paket bekommen"
 
-#: remote-curl.c:395
+#: remote-curl.c:427
 #, c-format
 msgid "invalid server response; got '%s'"
 msgstr "Ungültige Serverantwort; '%s' bekommen"
 
-#: remote-curl.c:455
+#: remote-curl.c:487
 #, c-format
 msgid "repository '%s' not found"
 msgstr "Repository '%s' nicht gefunden."
 
-#: remote-curl.c:459
+#: remote-curl.c:491
 #, c-format
 msgid "Authentication failed for '%s'"
 msgstr "Authentifizierung fehlgeschlagen für '%s'"
 
-#: remote-curl.c:463
+#: remote-curl.c:495
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr "konnte nicht auf '%s' zugreifen: %s"
 
-#: remote-curl.c:469
+#: remote-curl.c:501
 #, c-format
 msgid "redirecting to %s"
-msgstr "Leite nach %s um"
+msgstr "Umleitung nach %s"
 
-#: remote-curl.c:593
+#: remote-curl.c:630
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "sollte kein EOF haben, wenn nicht behutsam mit EOF"
 
-#: remote-curl.c:673
+#: remote-curl.c:642
+msgid "remote server sent stateless separator"
+msgstr "Server sendete zustandslosen Separator"
+
+#: remote-curl.c:712
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr ""
-"Konnte nicht RPC-POST-Daten zurückspulen - Versuchen Sie http.postBuffer zu "
+"konnte nicht RPC-POST-Daten zurückspulen - Versuchen Sie http.postBuffer zu "
 "erhöhen"
 
-#: remote-curl.c:733
+#: remote-curl.c:742
+#, c-format
+msgid "remote-curl: bad line length character: %.4s"
+msgstr "remote-curl: ungültiges Zeichen für Zeilenlänge: %.4s"
+
+#: remote-curl.c:744
+msgid "remote-curl: unexpected response end packet"
+msgstr "remote-curl: unerwartetes Antwort-Endpaket"
+
+#: remote-curl.c:820
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC fehlgeschlagen; %s"
 
-#: remote-curl.c:773
+#: remote-curl.c:860
 msgid "cannot handle pushes this big"
 msgstr "Kann solche großen Übertragungen nicht verarbeiten."
 
-#: remote-curl.c:888
+#: remote-curl.c:975
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "Kann Request nicht komprimieren; \"zlib deflate\"-Fehler %d"
 
-#: remote-curl.c:892
+#: remote-curl.c:979
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "Kann Request nicht komprimieren; \"zlib end\"-Fehler %d"
 
-#: remote-curl.c:1023
+#: remote-curl.c:1029
+#, c-format
+msgid "%d bytes of length header were received"
+msgstr "%d Bytes des Längen-Headers wurden empfangen"
+
+#: remote-curl.c:1031
+#, c-format
+msgid "%d bytes of body are still expected"
+msgstr "%d Bytes des Bodys werden noch erwartet"
+
+#: remote-curl.c:1120
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "Dumb HTTP-Transport unterstützt keine shallow-Funktionen"
 
-#: remote-curl.c:1038
+#: remote-curl.c:1135
 msgid "fetch failed."
 msgstr "\"fetch\" fehlgeschlagen."
 
-#: remote-curl.c:1086
+#: remote-curl.c:1183
 msgid "cannot fetch by sha1 over smart http"
 msgstr "Kann SHA-1 nicht über Smart-HTTP anfordern"
 
-#: remote-curl.c:1130 remote-curl.c:1136
+#: remote-curl.c:1227 remote-curl.c:1233
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "Protokollfehler: SHA-1/Referenz erwartet, '%s' bekommen"
 
-#: remote-curl.c:1148 remote-curl.c:1263
+#: remote-curl.c:1245 remote-curl.c:1360
 #, c-format
 msgid "http transport does not support %s"
 msgstr "HTTP-Transport unterstützt nicht %s"
 
-#: remote-curl.c:1184
+#: remote-curl.c:1281
 msgid "git-http-push failed"
 msgstr "\"git-http-push\" fehlgeschlagen"
 
-#: remote-curl.c:1369
+#: remote-curl.c:1466
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: Verwendung: git remote-curl <Remote-Repository> [<URL>]"
 
-#: remote-curl.c:1401
+#: remote-curl.c:1498
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl: Fehler beim Lesen des Kommando-Streams von Git"
 
-#: remote-curl.c:1408
+#: remote-curl.c:1505
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl: \"fetch\" ohne lokales Repository versucht"
 
-#: remote-curl.c:1448
+#: remote-curl.c:1546
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl: Unbekannter Befehl '%s' von Git"
@@ -23741,7 +23996,7 @@
 
 #: command-list.h:170
 msgid "Git's i18n setup code for shell scripts"
-msgstr "Git's i18n-Konfigurationscode für Shell-Skripte"
+msgstr "Gits i18n-Konfigurationscode für Shell-Skripte"
 
 #: command-list.h:171
 msgid "Common Git shell script setup code"
@@ -24213,27 +24468,27 @@
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Fehler bei Rekursion in Submodul-Pfad '$displaypath'"
 
-#: git-submodule.sh:878
+#: git-submodule.sh:852
 msgid "The --cached option cannot be used with the --files option"
 msgstr ""
 "Die Optionen --cached und --files können nicht gemeinsam verwendet werden."
 
-#: git-submodule.sh:930
+#: git-submodule.sh:904
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "unerwarteter Modus $mod_dst"
 
-#: git-submodule.sh:950
+#: git-submodule.sh:924
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr "  Warnung: $display_name beinhaltet nicht Commit $sha1_src"
 
-#: git-submodule.sh:953
+#: git-submodule.sh:927
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr "  Warnung: $display_name beinhaltet nicht Commit $sha1_dst"
 
-#: git-submodule.sh:956
+#: git-submodule.sh:930
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -24672,7 +24927,7 @@
 msgstr[0] "%d Pfad angefasst\n"
 msgstr[1] "%d Pfade angefasst\n"
 
-#: git-add--interactive.perl:1053
+#: git-add--interactive.perl:1055
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -24680,7 +24935,7 @@
 "Wenn der Patch sauber angewendet werden kann, wird der bearbeitete\n"
 "Patch-Block direkt zum Hinzufügen zur Staging-Area markiert."
 
-#: git-add--interactive.perl:1056
+#: git-add--interactive.perl:1058
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -24688,7 +24943,7 @@
 "Wenn der Patch sauber angewendet werden kann, wird der bearbeitete\n"
 "Patch-Block direkt zum Hinzufügen zum Stash markiert."
 
-#: git-add--interactive.perl:1059
+#: git-add--interactive.perl:1061
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -24696,8 +24951,8 @@
 "Wenn der Patch sauber angewendet werden kann, wird der bearbeitete\n"
 "Patch-Block direkt zum Entfernen aus der Staging-Area markiert."
 
-#: git-add--interactive.perl:1062 git-add--interactive.perl:1071
-#: git-add--interactive.perl:1077
+#: git-add--interactive.perl:1064 git-add--interactive.perl:1073
+#: git-add--interactive.perl:1079
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -24705,8 +24960,8 @@
 "Wenn der Patch sauber angewendet werden kann, wird der bearbeitete\n"
 "Patch-Block direkt zum Anwenden markiert."
 
-#: git-add--interactive.perl:1065 git-add--interactive.perl:1068
-#: git-add--interactive.perl:1074
+#: git-add--interactive.perl:1067 git-add--interactive.perl:1070
+#: git-add--interactive.perl:1076
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -24714,13 +24969,13 @@
 "Wenn der Patch sauber angewendet werden kann, wird der bearbeitete\n"
 "Patch-Block direkt zum Verwerfen markiert."
 
-#: git-add--interactive.perl:1111
+#: git-add--interactive.perl:1113
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr ""
 "Fehler beim Öffnen von Editier-Datei eines Patch-Blocks zum Schreiben: %s"
 
-#: git-add--interactive.perl:1118
+#: git-add--interactive.perl:1120
 #, perl-format
 msgid ""
 "---\n"
@@ -24733,12 +24988,12 @@
 "Um '%s' Zeilen zu entfernen, löschen Sie diese.\n"
 "Zeilen, die mit %s beginnen, werden entfernt.\n"
 
-#: git-add--interactive.perl:1140
+#: git-add--interactive.perl:1142
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "Fehler beim Öffnen von Editier-Datei eines Patch-Blocks zum Lesen: %s"
 
-#: git-add--interactive.perl:1248
+#: git-add--interactive.perl:1250
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -24754,7 +25009,7 @@
 "d - diesen oder alle weiteren Patch-Blöcke in dieser Datei nicht zum Commit "
 "vormerken"
 
-#: git-add--interactive.perl:1254
+#: git-add--interactive.perl:1256
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -24768,7 +25023,7 @@
 "a - diesen und alle weiteren Patch-Blöcke dieser Datei stashen\n"
 "d - diesen oder alle weiteren Patch-Blöcke dieser Datei nicht stashen"
 
-#: git-add--interactive.perl:1260
+#: git-add--interactive.perl:1262
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -24782,7 +25037,7 @@
 "a - diesen und alle weiteren Patch-Blöcke dieser Datei unstashen\n"
 "d - diesen oder alle weiteren Patch-Blöcke dieser Datei nicht unstashen"
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1268
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -24799,7 +25054,7 @@
 "d - diesen oder alle weiteren Patch-Blöcke dieser Datei nicht auf den Index "
 "anwenden"
 
-#: git-add--interactive.perl:1272 git-add--interactive.perl:1290
+#: git-add--interactive.perl:1274 git-add--interactive.perl:1292
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -24816,7 +25071,7 @@
 "d - diesen oder alle weiteren Patch-Blöcke dieser Datei nicht im "
 "Arbeitsverzeichnis verwerfen"
 
-#: git-add--interactive.perl:1278
+#: git-add--interactive.perl:1280
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -24831,7 +25086,7 @@
 "a - diesen und alle weiteren Patch-Blöcke in der Datei verwerfen\n"
 "d - diesen oder alle weiteren Patch-Blöcke in der Datei nicht verwerfen"
 
-#: git-add--interactive.perl:1284
+#: git-add--interactive.perl:1286
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -24845,7 +25100,7 @@
 "a - diesen und alle weiteren Patch-Blöcke in der Datei anwenden\n"
 "d - diesen oder alle weiteren Patch-Blöcke in der Datei nicht anwenden"
 
-#: git-add--interactive.perl:1296
+#: git-add--interactive.perl:1298
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -24859,7 +25114,7 @@
 "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"
 
-#: git-add--interactive.perl:1311
+#: git-add--interactive.perl:1313
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -24883,87 +25138,92 @@
 "e - aktuellen Patch-Block manuell editieren\n"
 "? - Hilfe anzeigen\n"
 
-#: git-add--interactive.perl:1342
+#: git-add--interactive.perl:1344
 msgid "The selected hunks do not apply to the index!\n"
 msgstr ""
 "Die ausgewählten Patch-Blöcke können nicht auf den Index angewendet werden!\n"
 
-#: git-add--interactive.perl:1357
+#: git-add--interactive.perl:1359
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "ignoriere nicht zusammengeführte Datei: %s\n"
 
-#: git-add--interactive.perl:1468
+#: git-add--interactive.perl:1478
 #, perl-format
 msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
 msgstr "Modusänderung auf Arbeitsverzeichnis anwenden [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1469
+#: git-add--interactive.perl:1479
 #, perl-format
 msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
 msgstr "Löschung auf Arbeitsverzeichnis anwenden [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1470
+#: git-add--interactive.perl:1480
+#, perl-format
+msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
+msgstr "Ergänzung auf Arbeitsverzeichnis anwenden [y,n,q,a,d%s,?]? "
+
+#: git-add--interactive.perl:1481
 #, perl-format
 msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Diesen Patch-Block auf das Arbeitsverzeichnis anwenden [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1570
+#: git-add--interactive.perl:1587
 msgid "No other hunks to goto\n"
 msgstr "Keine anderen Patch-Blöcke verbleibend\n"
 
-#: git-add--interactive.perl:1588
+#: git-add--interactive.perl:1605
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Ungültige Nummer: '%s'\n"
 
-#: git-add--interactive.perl:1593
+#: git-add--interactive.perl:1610
 #, perl-format
 msgid "Sorry, only %d hunk available.\n"
 msgid_plural "Sorry, only %d hunks available.\n"
 msgstr[0] "Entschuldigung, nur %d Patch-Block verfügbar.\n"
 msgstr[1] "Entschuldigung, nur %d Patch-Blöcke verfügbar.\n"
 
-#: git-add--interactive.perl:1619
+#: git-add--interactive.perl:1636
 msgid "No other hunks to search\n"
 msgstr "Keine anderen Patch-Blöcke zum Durchsuchen\n"
 
-#: git-add--interactive.perl:1636
+#: git-add--interactive.perl:1653
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Fehlerhafter regulärer Ausdruck für Suche %s: %s\n"
 
-#: git-add--interactive.perl:1646
+#: git-add--interactive.perl:1663
 msgid "No hunk matches the given pattern\n"
 msgstr "Kein Patch-Block entspricht dem angegebenen Muster\n"
 
-#: git-add--interactive.perl:1658 git-add--interactive.perl:1680
+#: git-add--interactive.perl:1675 git-add--interactive.perl:1697
 msgid "No previous hunk\n"
 msgstr "Kein vorheriger Patch-Block\n"
 
-#: git-add--interactive.perl:1667 git-add--interactive.perl:1686
+#: git-add--interactive.perl:1684 git-add--interactive.perl:1703
 msgid "No next hunk\n"
 msgstr "Kein folgender Patch-Block\n"
 
-#: git-add--interactive.perl:1692
+#: git-add--interactive.perl:1709
 msgid "Sorry, cannot split this hunk\n"
 msgstr "Entschuldigung, kann diesen Patch-Block nicht aufteilen.\n"
 
-#: git-add--interactive.perl:1698
+#: git-add--interactive.perl:1715
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
 msgstr[0] "In %d Patch-Block aufgeteilt.\n"
 msgstr[1] "In %d Patch-Blöcke aufgeteilt.\n"
 
-#: git-add--interactive.perl:1708
+#: git-add--interactive.perl:1725
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "Entschuldigung, kann diesen Patch-Block nicht bearbeiten.\n"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1773
+#: git-add--interactive.perl:1790
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -24982,19 +25242,19 @@
 "diff          - Unterschiede zwischen HEAD und Index anzeigen\n"
 "add untracked - Inhalte von unversionierten Dateien zum Commit vormerken\n"
 
-#: git-add--interactive.perl:1790 git-add--interactive.perl:1795
-#: git-add--interactive.perl:1798 git-add--interactive.perl:1805
-#: git-add--interactive.perl:1808 git-add--interactive.perl:1815
-#: git-add--interactive.perl:1819 git-add--interactive.perl:1825
+#: git-add--interactive.perl:1807 git-add--interactive.perl:1812
+#: git-add--interactive.perl:1815 git-add--interactive.perl:1822
+#: git-add--interactive.perl:1825 git-add--interactive.perl:1832
+#: git-add--interactive.perl:1836 git-add--interactive.perl:1842
 msgid "missing --"
 msgstr "-- fehlt"
 
-#: git-add--interactive.perl:1821
+#: git-add--interactive.perl:1838
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "Unbekannter --patch Modus: %s"
 
-#: git-add--interactive.perl:1827 git-add--interactive.perl:1833
+#: git-add--interactive.perl:1844 git-add--interactive.perl:1850
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "ungültiges Argument %s, erwarte --"
@@ -25325,56 +25585,56 @@
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Füge to: hinzu: %s von Zeile '%s'\n"
 
-#: git-send-email.perl:1718
+#: git-send-email.perl:1722
 #, 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:1753
+#: git-send-email.perl:1757
 #, 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:1864
+#: git-send-email.perl:1868
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Konnte '%s' nicht ausführen"
 
-#: git-send-email.perl:1871
+#: git-send-email.perl:1875
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Füge %s: %s hinzu von: '%s'\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1879
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) Fehler beim Schließen der Pipe nach '%s'"
 
-#: git-send-email.perl:1905
+#: git-send-email.perl:1909
 msgid "cannot send message as 7bit"
 msgstr "Kann Nachricht nicht als 7bit versenden."
 
-#: git-send-email.perl:1913
+#: git-send-email.perl:1917
 msgid "invalid transfer encoding"
 msgstr "Ungültiges Transfer-Encoding"
 
-#: git-send-email.perl:1954 git-send-email.perl:2006 git-send-email.perl:2016
+#: git-send-email.perl:1958 git-send-email.perl:2010 git-send-email.perl:2020
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "konnte %s nicht öffnen: %s\n"
 
-#: git-send-email.perl:1957
+#: git-send-email.perl:1961
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr "%s: Patch enthält eine Zeile, die länger als 998 Zeichen ist"
 
-#: git-send-email.perl:1974
+#: git-send-email.perl:1978
 #, 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:1978
+#: git-send-email.perl:1982
 #, 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 97bd3e2..41a72ca 100644
--- a/po/es.po
+++ b/po/es.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: 2020-05-15 09:11+0800\n"
-"PO-Revision-Date: 2020-05-17 18:49-0500\n"
+"POT-Creation-Date: 2020-07-10 09:53+0800\n"
+"PO-Revision-Date: 2020-07-26 10:11-0500\n"
 "Last-Translator: christopher.diaz.riv@gmail.com\n"
 "Language-Team: CodeLabora <codelabora@gmail.com>\n"
 "Language: es\n"
@@ -111,21 +111,21 @@
 msgid "ignoring unmerged: %s"
 msgstr "ignorando lo no fusionado: %s"
 
-#: add-interactive.c:929 add-patch.c:1675 git-add--interactive.perl:1366
+#: add-interactive.c:929 add-patch.c:1691 git-add--interactive.perl:1368
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Solo cambiaron archivos binarios.\n"
 
-#: add-interactive.c:931 add-patch.c:1673 git-add--interactive.perl:1368
+#: add-interactive.c:931 add-patch.c:1689 git-add--interactive.perl:1370
 #, c-format
 msgid "No changes.\n"
 msgstr "Sin cambios.\n"
 
-#: add-interactive.c:935 git-add--interactive.perl:1376
+#: add-interactive.c:935 git-add--interactive.perl:1378
 msgid "Patch update"
 msgstr "Actualización del parche"
 
-#: add-interactive.c:974 git-add--interactive.perl:1754
+#: add-interactive.c:974 git-add--interactive.perl:1771
 msgid "Review diff"
 msgstr "Revisión de  diff"
 
@@ -194,11 +194,11 @@
 msgid "(empty) select nothing"
 msgstr "(vacío) selecciona nada"
 
-#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1851
+#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1868
 msgid "*** Commands ***"
 msgstr "*** Comandos ***"
 
-#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1848
+#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1865
 msgid "What now"
 msgstr "Ahora que"
 
@@ -215,7 +215,7 @@
 #: builtin/merge.c:276 builtin/pull.c:190 builtin/submodule--helper.c:409
 #: builtin/submodule--helper.c:1394 builtin/submodule--helper.c:1397
 #: builtin/submodule--helper.c:1902 builtin/submodule--helper.c:1905
-#: builtin/submodule--helper.c:2148 bugreport.c:129
+#: builtin/submodule--helper.c:2148 bugreport.c:135
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "ruta"
@@ -224,27 +224,32 @@
 msgid "could not refresh index"
 msgstr "no se pudo refrescar el index"
 
-#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1765
+#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1782
 #, c-format
 msgid "Bye.\n"
 msgstr "Adiós.\n"
 
-#: add-patch.c:34 git-add--interactive.perl:1428
+#: add-patch.c:34 git-add--interactive.perl:1430
 #, c-format, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "¿Cambio de modo de stage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:35 git-add--interactive.perl:1429
+#: add-patch.c:35 git-add--interactive.perl:1431
 #, c-format, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar stage al borrado [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:36 git-add--interactive.perl:1430
+#: add-patch.c:36 git-add--interactive.perl:1432
+#, c-format, perl-format
+msgid "Stage addition [y,n,q,a,d%s,?]? "
+msgstr "¿Agregar al stage [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:37 git-add--interactive.perl:1433
 #, 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,?]? "
 
-#: add-patch.c:38
+#: add-patch.c:39
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "staging."
@@ -252,7 +257,7 @@
 "Si el parche aplica limpiamente, el hunk editado sera marcado inmediatamente "
 "para el área de stage."
 
-#: add-patch.c:41
+#: add-patch.c:42
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -267,22 +272,27 @@
 "d - no aplicar stage a este hunk o a ninguno de los posteriores en este "
 "archivo\n"
 
-#: add-patch.c:55 git-add--interactive.perl:1433
+#: add-patch.c:56 git-add--interactive.perl:1436
 #, 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,?]? "
 
-#: add-patch.c:56 git-add--interactive.perl:1434
+#: add-patch.c:57 git-add--interactive.perl:1437
 #, c-format, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar stash al borrado [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:57 git-add--interactive.perl:1435
+#: add-patch.c:58 git-add--interactive.perl:1438
+#, c-format, perl-format
+msgid "Stash addition [y,n,q,a,d%s,?]? "
+msgstr "¿Agregar al stash [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:59 git-add--interactive.perl:1439
 #, 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,?]? "
 
-#: add-patch.c:59
+#: add-patch.c:61
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "stashing."
@@ -290,7 +300,7 @@
 "Si el parche aplica limpiamente, el hunk editado sera marcado inmediatamente "
 "para aplicar stash."
 
-#: add-patch.c:62
+#: add-patch.c:64
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -304,22 +314,27 @@
 "a - aplicar stash a este hunk y a todos los posteriores en el archivo\n"
 "d - no aplicar stash a este hunk o ninguno de los posteriores en el archivo\n"
 
-#: add-patch.c:78 git-add--interactive.perl:1438
+#: add-patch.c:80 git-add--interactive.perl:1442
 #, c-format, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr "¿Sacar cambio de modo del stage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:79 git-add--interactive.perl:1439
+#: add-patch.c:81 git-add--interactive.perl:1443
 #, c-format, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "¿Sacar borrado del stage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:80 git-add--interactive.perl:1440
+#: add-patch.c:82 git-add--interactive.perl:1444
+#, c-format, perl-format
+msgid "Unstage addition [y,n,q,a,d%s,?]? "
+msgstr "¿Quitar adición al stage [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:83 git-add--interactive.perl:1445
 #, 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,?]? "
 
-#: add-patch.c:82
+#: add-patch.c:85
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "unstaging."
@@ -327,7 +342,7 @@
 "Si el parche aplica limpiamente, el hunk editado sera marcado inmediatamente "
 "para sacar del área de stage."
 
-#: add-patch.c:85
+#: add-patch.c:88
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -342,22 +357,27 @@
 "d - no sacar del area de stage este hunk o ninguno de los posteriores en el "
 "archivo\n"
 
-#: add-patch.c:100 git-add--interactive.perl:1443
+#: add-patch.c:103 git-add--interactive.perl:1448
 #, c-format, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar cambio de modo al índice [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:101 git-add--interactive.perl:1444
+#: add-patch.c:104 git-add--interactive.perl:1449
 #, c-format, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar borrado al índice [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:102 git-add--interactive.perl:1445
+#: add-patch.c:105 git-add--interactive.perl:1450
+#, c-format, perl-format
+msgid "Apply addition to index [y,n,q,a,d%s,?]? "
+msgstr "¿Aplicar adición al índice [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:106 git-add--interactive.perl:1451
 #, 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,?]? "
 
-#: add-patch.c:104 add-patch.c:169 add-patch.c:212
+#: 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."
@@ -365,7 +385,7 @@
 "Si el parche aplica de forma limpia, el hunk editado sera marcado "
 "inmediatamente para aplicar."
 
-#: add-patch.c:107
+#: add-patch.c:111
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -379,25 +399,31 @@
 "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"
 
-#: add-patch.c:122 git-add--interactive.perl:1448
-#: git-add--interactive.perl:1463
+#: add-patch.c:126 git-add--interactive.perl:1454
+#: git-add--interactive.perl:1472
 #, c-format, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Descartar cambio de modo del árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:123 git-add--interactive.perl:1449
-#: git-add--interactive.perl:1464
+#: add-patch.c:127 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
 #, c-format, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Descartar borrado del árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:124 git-add--interactive.perl:1450
-#: git-add--interactive.perl:1465
+#: add-patch.c:128 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
+#, c-format, perl-format
+msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
+msgstr "¿Descartar adición del árbol de trabajo [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:129 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
 #, 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,?]? "
 
-#: add-patch.c:126 add-patch.c:148 add-patch.c:191
+#: 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."
@@ -405,7 +431,7 @@
 "Si el parche aplica de forma limpia, el hunk editado sera marcado "
 "inmediatamente para descarte."
 
-#: add-patch.c:129 add-patch.c:194
+#: add-patch.c:134 add-patch.c:202
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -419,24 +445,29 @@
 "a - descartar este hunk y todos los posteriores en este archivo\n"
 "d - no descartar este hunk o ninguno de los posteriores en el archivo\n"
 
-#: add-patch.c:144 add-patch.c:187 git-add--interactive.perl:1453
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1460
 #, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "¿Descartar cambio de modo del índice y el árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:145 add-patch.c:188 git-add--interactive.perl:1454
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1461
 #, c-format, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Descartar borrado del índice y el árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:146 add-patch.c:189 git-add--interactive.perl:1455
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1462
+#, c-format, perl-format
+msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
+msgstr "¿Descartar adición del índice y el árbol de trabajo [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1463
 #, 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,?]? "
 
-#: add-patch.c:151
+#: add-patch.c:157
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -450,24 +481,29 @@
 "a - descartar este hunk y todos los posteriores en este archivo\n"
 "d - no descartar este hunk o ninguno posterior en el archivo\n"
 
-#: add-patch.c:165 add-patch.c:208 git-add--interactive.perl:1458
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1466
 #, c-format, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "¿Aplicar cambio de modo para el índice y el árbol de trabajo [y,n,q,a,d"
 "%s,?]? "
 
-#: add-patch.c:166 add-patch.c:209 git-add--interactive.perl:1459
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1467
 #, c-format, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "¿Aplicar borrado al índice y al árbol de trabajo [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:167 add-patch.c:210 git-add--interactive.perl:1460
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1468
+#, c-format, perl-format
+msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
+msgstr "¿Aplicar adición al índice y al árbol de trabajo [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1469
 #, 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,?]? "
 
-#: add-patch.c:172
+#: add-patch.c:179
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -481,7 +517,7 @@
 "a - aplicar este hunk y todos los posteriores en el archivo\n"
 "d - no aplicar este hunk o ninguno de los siguientes en este archivo\n"
 
-#: add-patch.c:215
+#: add-patch.c:224
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -495,34 +531,34 @@
 "a - aplicar este hunk y todos los posteriores en el archivo\n"
 "d - no aplicar este hunk o ninguno de los siguientes en este archivo\n"
 
-#: add-patch.c:319
+#: add-patch.c:328
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "no se puede analizar hunk header '%.*s'"
 
-#: add-patch.c:338 add-patch.c:342
+#: add-patch.c:347 add-patch.c:351
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "no se puede analizar hunk header '%.*s'"
 
-#: add-patch.c:396
+#: add-patch.c:405
 msgid "could not parse diff"
 msgstr "no se puede analizar diff"
 
-#: add-patch.c:415
+#: add-patch.c:424
 msgid "could not parse colored diff"
 msgstr "no se pudo analizar diff a colores"
 
-#: add-patch.c:429
+#: add-patch.c:438
 #, c-format
 msgid "failed to run '%s'"
 msgstr "falló al ejecutar '%s'"
 
-#: add-patch.c:588
+#: add-patch.c:602
 msgid "mismatched output from interactive.diffFilter"
 msgstr "output de interactive.diffFilter no concuerda"
 
-#: add-patch.c:589
+#: add-patch.c:603
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -530,7 +566,7 @@
 "Tu filtro tiene que mantener correspondencia de uno a uno\n"
 "entre las líneas de entrada y salida."
 
-#: add-patch.c:762
+#: add-patch.c:776
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -539,7 +575,7 @@
 "se esperaba línea de contexto #%d en\n"
 "%.*s"
 
-#: add-patch.c:777
+#: add-patch.c:791
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -552,11 +588,11 @@
 "\tno acaba con:\n"
 "%.*s"
 
-#: add-patch.c:1053 git-add--interactive.perl:1112
+#: add-patch.c:1067 git-add--interactive.perl:1114
 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:1057
+#: add-patch.c:1071
 #, c-format
 msgid ""
 "---\n"
@@ -570,7 +606,7 @@
 "Lineas comenzando con  %c serán eliminadas.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1071 git-add--interactive.perl:1126
+#: add-patch.c:1085 git-add--interactive.perl:1128
 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"
@@ -580,11 +616,11 @@
 "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"
 
-#: add-patch.c:1104
+#: add-patch.c:1118
 msgid "could not parse hunk header"
 msgstr "no se puede analizar hunk header"
 
-#: add-patch.c:1149
+#: add-patch.c:1163
 msgid "'git apply --cached' failed"
 msgstr "falló 'git apply --cached'"
 
@@ -600,26 +636,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:1218 git-add--interactive.perl:1239
+#: add-patch.c:1232 git-add--interactive.perl:1241
 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:1261
+#: add-patch.c:1275
 msgid "The selected hunks do not apply to the index!"
 msgstr "¡Los hunks seleccionados no aplican al índice!"
 
-#: add-patch.c:1262 git-add--interactive.perl:1343
+#: add-patch.c:1276 git-add--interactive.perl:1345
 msgid "Apply them to the worktree anyway? "
 msgstr "¿Aplicarlos al árbol de trabajo de todas maneras? "
 
-#: add-patch.c:1269 git-add--interactive.perl:1346
+#: add-patch.c:1283 git-add--interactive.perl:1348
 msgid "Nothing was applied.\n"
 msgstr "Nada fue aplicado.\n"
 
-#: add-patch.c:1326
+#: add-patch.c:1340
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -641,69 +677,69 @@
 "e - editar manualmente el hunk actual\n"
 "? - imprimir ayuda\n"
 
-#: add-patch.c:1447 add-patch.c:1457
+#: add-patch.c:1463 add-patch.c:1473
 msgid "No previous hunk"
 msgstr "No el anterior hunk"
 
-#: add-patch.c:1452 add-patch.c:1462
+#: add-patch.c:1468 add-patch.c:1478
 msgid "No next hunk"
 msgstr "No el siguiente hunk"
 
-#: add-patch.c:1468
+#: add-patch.c:1484
 msgid "No other hunks to goto"
 msgstr "No hay más pedazos para el ir"
 
-#: add-patch.c:1479 git-add--interactive.perl:1577
+#: add-patch.c:1495 git-add--interactive.perl:1594
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "¿a que hunk ir (<enter> para ver más)? "
 
-#: add-patch.c:1480 git-add--interactive.perl:1579
+#: add-patch.c:1496 git-add--interactive.perl:1596
 msgid "go to which hunk? "
 msgstr "¿a que hunk ir? "
 
-#: add-patch.c:1491
+#: add-patch.c:1507
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Numero inválido: '%s'"
 
-#: add-patch.c:1496
+#: add-patch.c:1512
 #, 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."
 
-#: add-patch.c:1505
+#: add-patch.c:1521
 msgid "No other hunks to search"
 msgstr "No hay más pedazos para buscar"
 
-#: add-patch.c:1511 git-add--interactive.perl:1623
+#: add-patch.c:1527 git-add--interactive.perl:1640
 msgid "search for regex? "
 msgstr "¿buscar para regexp? "
 
-#: add-patch.c:1526
+#: add-patch.c:1542
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Regexp para la búsqueda mal formado %s: %s"
 
-#: add-patch.c:1543
+#: add-patch.c:1559
 msgid "No hunk matches the given pattern"
 msgstr "No hay hunks que concuerden con el patrón entregado."
 
-#: add-patch.c:1550
+#: add-patch.c:1566
 msgid "Sorry, cannot split this hunk"
 msgstr "Perdón, no se puede dividir este pedazo"
 
-#: add-patch.c:1554
+#: add-patch.c:1570
 #, c-format
 msgid "Split into %d hunks."
 msgstr "Cortar en %d hunk."
 
-#: add-patch.c:1558
+#: add-patch.c:1574
 msgid "Sorry, cannot edit this hunk"
 msgstr "Perdón, no se puede editar este pedazo"
 
-#: add-patch.c:1609
+#: add-patch.c:1625
 msgid "'git apply' failed"
 msgstr "falló 'git apply'"
 
@@ -1404,7 +1440,7 @@
 
 #: apply.c:5008 builtin/am.c:2238 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3458 builtin/rebase.c:1332
+#: builtin/pack-objects.c:3530 builtin/rebase.c:1332
 msgid "action"
 msgstr "acción"
 
@@ -1436,7 +1472,7 @@
 msgstr "permitir solapamiento de hunks"
 
 #: apply.c:5025 builtin/add.c:323 builtin/check-ignore.c:22
-#: builtin/commit.c:1366 builtin/count-objects.c:98 builtin/fsck.c:774
+#: builtin/commit.c:1366 builtin/count-objects.c:98 builtin/fsck.c:775
 #: builtin/log.c:2186 builtin/mv.c:123 builtin/read-tree.c:128
 msgid "be verbose"
 msgstr "ser verboso"
@@ -1498,7 +1534,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "ruta muy larga (%d chars, SHA1: %s): %s"
 
-#: archive-zip.c:480 builtin/pack-objects.c:232 builtin/pack-objects.c:235
+#: archive-zip.c:480 builtin/pack-objects.c:243 builtin/pack-objects.c:246
 #, c-format
 msgid "deflate error (%d)"
 msgstr "error al desinflar (%d)"
@@ -1568,8 +1604,8 @@
 msgstr "anteponer prefijo a cada ruta en el archivo"
 
 #: archive.c:467 builtin/blame.c:861 builtin/blame.c:865 builtin/blame.c:866
-#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1162
-#: builtin/fast-export.c:1164 builtin/fast-export.c:1168 builtin/grep.c:907
+#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1208
+#: builtin/fast-export.c:1210 builtin/fast-export.c:1214 builtin/grep.c:907
 #: 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
@@ -1794,10 +1830,10 @@
 msgstr ""
 "--reverse y --first-parent juntos requieren especificar el último commit"
 
-#: blame.c:2821 bundle.c:167 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
+#: blame.c:2821 bundle.c:187 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
 #: sequencer.c:4466 submodule.c:847 builtin/commit.c:1047 builtin/log.c:405
 #: builtin/log.c:1012 builtin/log.c:1541 builtin/log.c:1945 builtin/log.c:2235
-#: builtin/merge.c:415 builtin/pack-objects.c:3276 builtin/pack-objects.c:3291
+#: builtin/merge.c:415 builtin/pack-objects.c:3348 builtin/pack-objects.c:3363
 #: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr "falló la configuración del camino de revisión"
@@ -1968,84 +2004,88 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "HEAD del árbol de trabajo %s no está actualizada"
 
-#: bundle.c:36
+#: bundle.c:47
 #, c-format
 msgid "'%s' does not look like a v2 bundle file"
 msgstr "'%s' no se ve como un archivo bundle v2"
 
-#: bundle.c:64
+#: bundle.c:69
+msgid "unknown hash algorithm length"
+msgstr "largo del algoritmo hash desconocido"
+
+#: bundle.c:84
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "header no reconocido %s%s (%d)"
 
-#: bundle.c:90 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
+#: bundle.c:110 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
 msgstr "no se pudo abrir '%s'"
 
-#: bundle.c:143
+#: bundle.c:163
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Al repositorio le falta estos commits prerrequisito:"
 
-#: bundle.c:146
+#: bundle.c:166
 msgid "need a repository to verify a bundle"
 msgstr "se necesita un repositorio para verificar un bundle"
 
-#: bundle.c:197
+#: bundle.c:217
 #, 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:204
+#: bundle.c:224
 msgid "The bundle records a complete history."
 msgstr "El bundle registra una historia completa."
 
-#: bundle.c:206
+#: bundle.c:226
 #, 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:273
+#: bundle.c:293
 msgid "unable to dup bundle descriptor"
 msgstr "incapaz de duplicar bundle descriptor"
 
-#: bundle.c:280
+#: bundle.c:300
 msgid "Could not spawn pack-objects"
 msgstr "No se pudo crear los pack-objetcts"
 
-#: bundle.c:291
+#: bundle.c:311
 msgid "pack-objects died"
 msgstr "pack-objects murió"
 
-#: bundle.c:333
+#: bundle.c:353
 msgid "rev-list died"
 msgstr "rev-list murió"
 
-#: bundle.c:382
+#: bundle.c:402
 #, 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:461 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
+#: bundle.c:481 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "argumento no reconocido: %s"
 
-#: bundle.c:469
+#: bundle.c:489
 msgid "Refusing to create empty bundle."
 msgstr "Rechazando crear un bundle vacío."
 
-#: bundle.c:479
+#: bundle.c:499
 #, c-format
 msgid "cannot create '%s'"
 msgstr "no se puede crear '%s'"
 
-#: bundle.c:504
+#: bundle.c:524
 msgid "index-pack died"
 msgstr "index-pack murió"
 
@@ -2054,277 +2094,269 @@
 msgid "invalid color value: %.*s"
 msgstr "color inválido: %.*s"
 
-#: commit-graph.c:183
+#: commit-graph.c:238
 msgid "commit-graph file is too small"
 msgstr "archivo commit-graph es muy pequeño"
 
-#: commit-graph.c:248
+#: commit-graph.c:303
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "firma %X en commit-graph no concuerda con firma %X"
 
-#: commit-graph.c:255
+#: commit-graph.c:310
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "versión de commit-graph %X no concuerda con versión %X"
 
-#: commit-graph.c:262
+#: commit-graph.c:317
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "versión de hash de commit-graph %X no concuerda con versión %X"
 
-#: commit-graph.c:284
+#: commit-graph.c:339
 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"
 
-#: commit-graph.c:294
+#: commit-graph.c:349
 #, c-format
 msgid "commit-graph improper chunk offset %08x%08x"
 msgstr "offset del chunk de commit-graph inapropiado %08x%08x"
 
-#: commit-graph.c:362
+#: commit-graph.c:417
 #, c-format
 msgid "commit-graph chunk id %08x appears multiple times"
 msgstr "id de chunk de commit-graph %08x parece tener múltiples tiempos"
 
-#: commit-graph.c:436
+#: commit-graph.c:491
 msgid "commit-graph has no base graphs chunk"
 msgstr "commit-graph no tiene una chunk base de graphs"
 
-#: commit-graph.c:446
+#: commit-graph.c:501
 msgid "commit-graph chain does not match"
 msgstr "cadena commit-graph no concuerda"
 
-#: commit-graph.c:494
+#: commit-graph.c:549
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "cadena de commit-graph inválida: línea '%s' no es un hash"
 
-#: commit-graph.c:518
+#: commit-graph.c:573
 msgid "unable to find all commit-graph files"
 msgstr "no es posible encontrar los archivos commit-graph"
 
-#: commit-graph.c:651 commit-graph.c:711
+#: commit-graph.c:706 commit-graph.c:770
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr "posición de commit inválida. commit-graph está probablemente corrupto"
 
-#: commit-graph.c:672
+#: commit-graph.c:727
 #, c-format
 msgid "could not find commit %s"
 msgstr "no se pudo encontrar commit %s"
 
-#: commit-graph.c:948 builtin/am.c:1292
+#: commit-graph.c:1009 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "no es posible analizar el commit %s"
 
-#: commit-graph.c:1096
+#: commit-graph.c:1157
 msgid "Writing changed paths Bloom filters index"
 msgstr "Escribiendo cambios de ruta del índice de filtros Bloom"
 
-#: commit-graph.c:1121
+#: commit-graph.c:1182
 msgid "Writing changed paths Bloom filters data"
 msgstr "Escribiendo cambios de ruta de datos de filtros Bloom"
 
-#: commit-graph.c:1160 builtin/pack-objects.c:2783
+#: commit-graph.c:1221 builtin/pack-objects.c:2832
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "incapaz de obtener el tipo de objeto: %s"
 
-#: commit-graph.c:1196
+#: commit-graph.c:1257
 msgid "Loading known commits in commit graph"
 msgstr "Cargando commits conocidos en commit graph"
 
-#: commit-graph.c:1213
+#: commit-graph.c:1274
 msgid "Expanding reachable commits in commit graph"
 msgstr "Expandiendo commits alcanzables en commit graph"
 
-#: commit-graph.c:1233
+#: commit-graph.c:1294
 msgid "Clearing commit marks in commit graph"
 msgstr "Limpiando marcas de commits en commit graph"
 
-#: commit-graph.c:1252
+#: commit-graph.c:1313
 msgid "Computing commit graph generation numbers"
 msgstr "Calculando números de generación de commit graph"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1367
 msgid "Computing commit changed paths Bloom filters"
 msgstr "Calculando números de generación de commit graph"
 
-#: commit-graph.c:1359
+#: commit-graph.c:1423
+msgid "Collecting referenced commits"
+msgstr "Recolectando commits referenciados"
+
+#: commit-graph.c:1447
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "Encontrando commits para commit graph en %d pack"
 msgstr[1] "Encontrando commits para commit graph en %d packs"
 
-#: commit-graph.c:1372
+#: commit-graph.c:1460
 #, c-format
 msgid "error adding pack %s"
 msgstr "error agregando pack %s"
 
-#: commit-graph.c:1376
+#: commit-graph.c:1464
 #, c-format
 msgid "error opening index for %s"
 msgstr "error abriendo index para %s"
 
-#: commit-graph.c:1405
-#, 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"
-
-#: commit-graph.c:1426
-#, c-format
-msgid "invalid commit object id: %s"
-msgstr "id de objeto commit: %s inválido"
-
-#: commit-graph.c:1442
+#: commit-graph.c:1503
 msgid "Finding commits for commit graph among packed objects"
 msgstr "Encontrando commits para commit graph entre los objetos empaquetados"
 
-#: commit-graph.c:1457
+#: commit-graph.c:1518
 msgid "Counting distinct commits in commit graph"
 msgstr "Contando commits distintos en commit graph"
 
-#: commit-graph.c:1489
+#: commit-graph.c:1550
 msgid "Finding extra edges in commit graph"
 msgstr "Encontrando esquinas extra en commit graph"
 
-#: commit-graph.c:1538
+#: commit-graph.c:1599
 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:1572 midx.c:812
+#: commit-graph.c:1633 midx.c:812
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "no se pudo crear directorios principales para %s"
 
-#: commit-graph.c:1585
+#: commit-graph.c:1646
 msgid "unable to create temporary graph layer"
 msgstr "no es posible crear un una capa de gráfico temporal"
 
-#: commit-graph.c:1590
+#: commit-graph.c:1651
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "no se pudo poner permisos a '%s'"
 
-#: commit-graph.c:1667
+#: commit-graph.c:1728
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "Escribiendo commit graph en %d paso"
 msgstr[1] "Escribiendo commit graph en %d pasos"
 
-#: commit-graph.c:1712
+#: commit-graph.c:1773
 msgid "unable to open commit-graph chain file"
 msgstr "no se pudo abrir la cadena de archivos commit-graph"
 
-#: commit-graph.c:1728
+#: commit-graph.c:1789
 msgid "failed to rename base commit-graph file"
 msgstr "no se pudo renombrar el archivo base commit-graph"
 
-#: commit-graph.c:1748
+#: commit-graph.c:1809
 msgid "failed to rename temporary commit-graph file"
 msgstr "falló al renombrar el archivo temporal commit-graph"
 
-#: commit-graph.c:1874
+#: commit-graph.c:1935
 msgid "Scanning merged commits"
 msgstr "Escaneando commits fusionados"
 
-#: commit-graph.c:1885
+#: commit-graph.c:1946
 #, c-format
 msgid "unexpected duplicate commit id %s"
 msgstr "id de commit duplicado inesperado %s"
 
-#: commit-graph.c:1908
+#: commit-graph.c:1969
 msgid "Merging commit-graph"
 msgstr "Fusionando commit-graph"
 
-#: commit-graph.c:2096
+#: commit-graph.c:2156
 #, c-format
 msgid "the commit graph format cannot write %d commits"
 msgstr "el formato de gráficos de commit no pudede escribir %d commits"
 
-#: commit-graph.c:2107
+#: commit-graph.c:2167
 msgid "too many commits to write graph"
 msgstr "demasiados commits para escribir el gráfico"
 
-#: commit-graph.c:2200
+#: commit-graph.c:2260
 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:2210
+#: commit-graph.c:2270
 #, 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:2220 commit-graph.c:2235
+#: commit-graph.c:2280 commit-graph.c:2295
 #, 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:2227
+#: commit-graph.c:2287
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "falló al analizar commit %s para commit-graph"
 
-#: commit-graph.c:2245
+#: commit-graph.c:2305
 msgid "Verifying commits in commit graph"
 msgstr "Verificando commits en commit graph"
 
-#: commit-graph.c:2259
+#: commit-graph.c:2320
 #, 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:2266
+#: commit-graph.c:2327
 #, 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"
 
-#: commit-graph.c:2276
+#: commit-graph.c:2337
 #, 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"
 
-#: commit-graph.c:2285
+#: commit-graph.c:2346
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "padre de commit-graph para %s es %s != %s"
 
-#: commit-graph.c:2298
+#: commit-graph.c:2360
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "lista padre de commit-graph para commit %s termina antes"
 
-#: commit-graph.c:2303
+#: commit-graph.c:2365
 #, 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.c:2307
+#: commit-graph.c:2369
 #, 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.c:2322
+#: commit-graph.c:2385
 #, c-format
 msgid "commit-graph generation for commit %s is %u != %u"
 msgstr "generación commit-graph para commit %s es %u != %u"
 
-#: commit-graph.c:2328
+#: commit-graph.c:2391
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
@@ -2361,27 +2393,27 @@
 "Apapa este mensaje ejecutando\n"
 "\"git config advice.graftFileDeprecated false\""
 
-#: commit.c:1168
+#: commit.c:1172
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr "Commit %s tiene una firma GPG no confiable, pretendidamente por %s."
 
-#: commit.c:1172
+#: commit.c:1176
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "Commit %s tiene una mala firma GPG pretendidamente por %s."
 
-#: commit.c:1175
+#: commit.c:1179
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Commit %s no tiene una firma GPG."
 
-#: commit.c:1178
+#: commit.c:1182
 #, 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"
 
-#: commit.c:1432
+#: commit.c:1436
 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"
@@ -2573,7 +2605,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:1533 builtin/pack-objects.c:3542
+#: config.c:1533 builtin/pack-objects.c:3617
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "nivel de compresión de pack erróneo %d"
@@ -2723,72 +2755,81 @@
 msgid "server doesn't support '%s'"
 msgstr "servidor no soporta '%s'"
 
-#: connect.c:103
+#: connect.c:118
 #, c-format
 msgid "server doesn't support feature '%s'"
 msgstr "servidor no soporta feature '%s'"
 
-#: connect.c:114
+#: connect.c:129
 msgid "expected flush after capabilities"
 msgstr "se espera flush tras capacidades"
 
-#: connect.c:233
+#: connect.c:263
 #, c-format
 msgid "ignoring capabilities after first line '%s'"
 msgstr "ignorando capacidades tras primera línea '%s'"
 
-#: connect.c:252
+#: connect.c:284
 msgid "protocol error: unexpected capabilities^{}"
 msgstr "error de protocolo: capacidades imprevistas^{}"
 
-#: connect.c:273
+#: connect.c:306
 #, c-format
 msgid "protocol error: expected shallow sha-1, got '%s'"
 msgstr "error de protocolo: sha-1 superficial esperado, se obtuvo '%s'"
 
-#: connect.c:275
+#: connect.c:308
 msgid "repository on the other end cannot be shallow"
 msgstr "el repositorio en el otro final no puede ser superficial"
 
-#: connect.c:313
+#: connect.c:347
 msgid "invalid packet"
 msgstr "paquete inválido"
 
-#: connect.c:333
+#: connect.c:367
 #, c-format
 msgid "protocol error: unexpected '%s'"
 msgstr "error de protocolo: '%s' inesperado"
 
-#: connect.c:441
+#: connect.c:473
+#, c-format
+msgid "unknown object format '%s' specified by server"
+msgstr "formato de objeto desconocido '%s' ha sido provisto por el servidor"
+
+#: connect.c:500
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "respuesta de referencias ls-refs inválida: %s"
 
-#: connect.c:445
+#: connect.c:504
 msgid "expected flush after ref listing"
 msgstr "flush esperado tras listado de refs"
 
-#: connect.c:544
+#: connect.c:507
+msgid "expected response end packet after ref listing"
+msgstr "se esperaba un paquete final luego del ref listing"
+
+#: connect.c:640
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "protocolo '%s' no es soportado"
 
-#: connect.c:595
+#: connect.c:691
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "no es posible configurar SO_KEEPALIVE en el socket"
 
-#: connect.c:635 connect.c:698
+#: connect.c:731 connect.c:794
 #, c-format
 msgid "Looking up %s ... "
 msgstr "Revisando %s... "
 
-#: connect.c:639
+#: connect.c:735
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "no se puede revisar %s (puerto %s) (%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:643 connect.c:714
+#: connect.c:739 connect.c:810
 #, c-format
 msgid ""
 "done.\n"
@@ -2797,7 +2838,7 @@
 "hecho.\n"
 "Conectando a %s (puerto %s) ... "
 
-#: connect.c:665 connect.c:742
+#: connect.c:761 connect.c:838
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2807,74 +2848,74 @@
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:671 connect.c:748
+#: connect.c:767 connect.c:844
 msgid "done."
 msgstr "hecho."
 
-#: connect.c:702
+#: connect.c:798
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "no es posible revisar %s (%s)"
 
-#: connect.c:708
+#: connect.c:804
 #, c-format
 msgid "unknown port %s"
 msgstr "puerto desconocido %s"
 
-#: connect.c:845 connect.c:1175
+#: connect.c:941 connect.c:1271
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "hostname extraño '%s' bloqueado"
 
-#: connect.c:847
+#: connect.c:943
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "puerto extraño '%s' bloqueado"
 
-#: connect.c:857
+#: connect.c:953
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "no se puede comenzar proxy %s"
 
-#: connect.c:928
+#: connect.c:1024
 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"
 
-#: connect.c:1123
+#: connect.c:1219
 msgid "ssh variant 'simple' does not support -4"
 msgstr "variante 'simple' de ssh no soporta -4"
 
-#: connect.c:1135
+#: connect.c:1231
 msgid "ssh variant 'simple' does not support -6"
 msgstr "variante 'simple' de ssh no soporta -6"
 
-#: connect.c:1152
+#: connect.c:1248
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "variante ssh 'simple' no soporta configurar puerto"
 
-#: connect.c:1264
+#: connect.c:1360
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "ruta extraña '%s' bloqueada"
 
-#: connect.c:1311
+#: connect.c:1407
 msgid "unable to fork"
 msgstr "no es posible hacer fork"
 
-#: connected.c:107 builtin/fsck.c:208 builtin/prune.c:45
+#: connected.c:109 builtin/fsck.c:209 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Verificando conectividad"
 
-#: connected.c:119
+#: connected.c:121
 msgid "Could not run 'git rev-list'"
 msgstr "No se pudo correr 'git rev-list'"
 
-#: connected.c:139
+#: connected.c:141
 msgid "failed write to rev-list"
 msgstr "falló escribir a rev-list"
 
-#: connected.c:146
+#: connected.c:148
 msgid "failed to close rev-list's stdin"
 msgstr "falló al cerrar la entrada standard de rev-list"
 
@@ -3137,17 +3178,17 @@
 "No es un repositorio git. Use --no-index para comparar dos paths fuera del "
 "árbol de trabajo"
 
-#: diff.c:155
+#: 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"
 
-#: diff.c:160
+#: diff.c:161
 #, c-format
 msgid "  Unknown dirstat parameter '%s'\n"
 msgstr "  parámetro '%s' de dirstat desconocido\n"
 
-#: diff.c:296
+#: diff.c:297
 msgid ""
 "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
 "'dimmed-zebra', 'plain'"
@@ -3155,7 +3196,7 @@
 "opción de color tiene que ser una de 'no', 'default', 'blocks', 'zebra', "
 "'dimmed_zebra', 'plain'"
 
-#: diff.c:324
+#: diff.c:325
 #, c-format
 msgid ""
 "unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', "
@@ -3165,7 +3206,7 @@
 "change', 'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-"
 "change'"
 
-#: diff.c:332
+#: diff.c:333
 msgid ""
 "color-moved-ws: allow-indentation-change cannot be combined with other "
 "whitespace modes"
@@ -3173,13 +3214,13 @@
 "color-moved-ws: allow-indentation-change no puede ser combinado con otros "
 "modos de espacios en blanco"
 
-#: diff.c:405
+#: diff.c:410
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
 msgstr ""
 "Valor para la variable de configuración 'diff.submodule' desconocido: '%s'"
 
-#: diff.c:465
+#: diff.c:470
 #, c-format
 msgid ""
 "Found errors in 'diff.dirstat' config variable:\n"
@@ -3188,35 +3229,35 @@
 "Errores en la variable de config 'diff.dirstat' encontrados:\n"
 "%s"
 
-#: diff.c:4238
+#: diff.c:4243
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "diff externo murió, deteniendo en %s"
 
-#: diff.c:4583
+#: diff.c:4589
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check y -s son mutuamente exclusivas"
 
-#: diff.c:4586
+#: diff.c:4592
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S y --find-object son mutuamente exclusivas"
 
-#: diff.c:4664
+#: diff.c:4670
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow requiere exactamente un pathspec"
 
-#: diff.c:4712
+#: diff.c:4718
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "valor --stat inválido: %s"
 
-#: diff.c:4717 diff.c:4722 diff.c:4727 diff.c:4732 diff.c:5245
+#: diff.c:4723 diff.c:4728 diff.c:4733 diff.c:4738 diff.c:5250
 #: parse-options.c:197 parse-options.c:201
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s espera un valor numérico"
 
-#: diff.c:4749
+#: diff.c:4755
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3225,42 +3266,42 @@
 "Falló al analizar parámetro de opción --dirstat/-X:\n"
 "%s"
 
-#: diff.c:4834
+#: diff.c:4840
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "cambio de clase desconocido '%c' en --diff-filter=%s"
 
-#: diff.c:4858
+#: diff.c:4864
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "valor desconocido luego de ws-error-highlight=%.*s"
 
-#: diff.c:4872
+#: diff.c:4878
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "no se puede resolver '%s'"
 
-#: diff.c:4922 diff.c:4928
+#: diff.c:4928 diff.c:4934
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s espera forma <n>/<m>"
 
-#: diff.c:4940
+#: diff.c:4946
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s esperaba un char, se obtuvo '%s'"
 
-#: diff.c:4961
+#: diff.c:4967
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "mal argumento --color-moved: %s"
 
-#: diff.c:4980
+#: diff.c:4986
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "modo inválido '%s' en --color-moved-ws"
 
-#: diff.c:5020
+#: diff.c:5026
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3268,154 +3309,154 @@
 "opción diff-algorithm acepta \"myers\", \"minimal\", \"patience\" e "
 "\"histogram\""
 
-#: diff.c:5056 diff.c:5076
+#: diff.c:5062 diff.c:5082
 #, c-format
 msgid "invalid argument to %s"
 msgstr "argumento inválido para %s"
 
-#: diff.c:5214
+#: diff.c:5219
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "falló al analizar parámetro de opción --submodule: '%s'"
 
-#: diff.c:5270
+#: diff.c:5275
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "mal argumento --word-diff: %s"
 
-#: diff.c:5293
+#: diff.c:5298
 msgid "Diff output format options"
 msgstr "Opciones de formato de salida para diff"
 
-#: diff.c:5295 diff.c:5301
+#: diff.c:5300 diff.c:5306
 msgid "generate patch"
 msgstr "generar parche"
 
-#: diff.c:5298 builtin/log.c:177
+#: diff.c:5303 builtin/log.c:177
 msgid "suppress diff output"
 msgstr "suprimir salida de diff"
 
-#: diff.c:5303 diff.c:5417 diff.c:5424
+#: diff.c:5308 diff.c:5422 diff.c:5429
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5304 diff.c:5307
+#: diff.c:5309 diff.c:5312
 msgid "generate diffs with <n> lines context"
 msgstr "genera diffs con <n> líneas de contexto"
 
-#: diff.c:5309
+#: diff.c:5314
 msgid "generate the diff in raw format"
 msgstr "genera el diff en formato raw"
 
-#: diff.c:5312
+#: diff.c:5317
 msgid "synonym for '-p --raw'"
 msgstr "sinónimo para '-p --stat'"
 
-#: diff.c:5316
+#: diff.c:5321
 msgid "synonym for '-p --stat'"
 msgstr "sinónimo para '-p --stat'"
 
-#: diff.c:5320
+#: diff.c:5325
 msgid "machine friendly --stat"
 msgstr "--stat amigable para máquina"
 
-#: diff.c:5323
+#: diff.c:5328
 msgid "output only the last line of --stat"
 msgstr "mostrar solo la última línea para --stat"
 
-#: diff.c:5325 diff.c:5333
+#: diff.c:5330 diff.c:5338
 msgid "<param1,param2>..."
 msgstr "<param1,param2>..."
 
-#: diff.c:5326
+#: diff.c:5331
 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 "
 "subdirectorio"
 
-#: diff.c:5330
+#: diff.c:5335
 msgid "synonym for --dirstat=cumulative"
 msgstr "sinónimo para --dirstat=cumulative"
 
-#: diff.c:5334
+#: diff.c:5339
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "sinonimo para --dirstat=archivos,param1,param2..."
 
-#: diff.c:5338
+#: diff.c:5343
 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:5341
+#: diff.c:5346
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 "resumen condensado de creaciones, cambios de nombres y cambios de modos"
 
-#: diff.c:5344
+#: diff.c:5349
 msgid "show only names of changed files"
 msgstr "mostrar solo nombres de archivos cambiados"
 
-#: diff.c:5347
+#: diff.c:5352
 msgid "show only names and status of changed files"
 msgstr "mostrar solo nombres y estados de archivos cambiados"
 
-#: diff.c:5349
+#: diff.c:5354
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<ancho>[,<nombre-ancho>[,<cantidad>]]"
 
-#: diff.c:5350
+#: diff.c:5355
 msgid "generate diffstat"
 msgstr "generar diffstat"
 
-#: diff.c:5352 diff.c:5355 diff.c:5358
+#: diff.c:5357 diff.c:5360 diff.c:5363
 msgid "<width>"
 msgstr "<ancho>"
 
-#: diff.c:5353
+#: diff.c:5358
 msgid "generate diffstat with a given width"
 msgstr "genera diffstat con un ancho dado"
 
-#: diff.c:5356
+#: diff.c:5361
 msgid "generate diffstat with a given name width"
 msgstr "genera diffstat con un nombre de ancho dado"
 
-#: diff.c:5359
+#: diff.c:5364
 msgid "generate diffstat with a given graph width"
 msgstr "genera diffstat con un ancho de graph dado"
 
-#: diff.c:5361
+#: diff.c:5366
 msgid "<count>"
 msgstr "<cantidad>"
 
-#: diff.c:5362
+#: diff.c:5367
 msgid "generate diffstat with limited lines"
 msgstr "genera diffstat con líneas limitadas"
 
-#: diff.c:5365
+#: diff.c:5370
 msgid "generate compact summary in diffstat"
 msgstr "genera un resumen compacto de diffstat"
 
-#: diff.c:5368
+#: diff.c:5373
 msgid "output a binary diff that can be applied"
 msgstr "muestra un diff binario que puede ser aplicado"
 
-#: diff.c:5371
+#: diff.c:5376
 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:5373
+#: diff.c:5378
 msgid "show colored diff"
 msgstr "mostrar diff colorido"
 
-#: diff.c:5374
+#: diff.c:5379
 msgid "<kind>"
 msgstr "<tipo>"
 
-#: diff.c:5375
+#: diff.c:5380
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3423,7 +3464,7 @@
 "resaltar errores de espacios en blanco en las líneas 'context', 'old' o "
 "'new' del diff"
 
-#: diff.c:5378
+#: diff.c:5383
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3431,89 +3472,89 @@
 "no consolidar los pathnames y usar NULs como terminadores de campos en --raw "
 "o --numstat"
 
-#: diff.c:5381 diff.c:5384 diff.c:5387 diff.c:5493
+#: diff.c:5386 diff.c:5389 diff.c:5392 diff.c:5498
 msgid "<prefix>"
 msgstr "<prefijo>"
 
-#: diff.c:5382
+#: diff.c:5387
 msgid "show the given source prefix instead of \"a/\""
 msgstr "mostrar el prefijo de fuente dado en lugar de \"a/\""
 
-#: diff.c:5385
+#: diff.c:5390
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "mostrar el prefijo de destino en lugar de \"b/\""
 
-#: diff.c:5388
+#: diff.c:5393
 msgid "prepend an additional prefix to every line of output"
 msgstr "anteponer un prefijo adicional a cada línea mostrada"
 
-#: diff.c:5391
+#: diff.c:5396
 msgid "do not show any source or destination prefix"
 msgstr "no mostrar ningún prefijo de fuente o destino"
 
-#: diff.c:5394
+#: diff.c:5399
 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:5398 diff.c:5403 diff.c:5408
+#: diff.c:5403 diff.c:5408 diff.c:5413
 msgid "<char>"
 msgstr "<char>"
 
-#: diff.c:5399
+#: diff.c:5404
 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:5404
+#: diff.c:5409
 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:5409
+#: diff.c:5414
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "especifica el char para indicar un contexto en lugar de ' '"
 
-#: diff.c:5412
+#: diff.c:5417
 msgid "Diff rename options"
 msgstr "Opciones de diff rename"
 
-#: diff.c:5413
+#: diff.c:5418
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5414
+#: diff.c:5419
 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:5418
+#: diff.c:5423
 msgid "detect renames"
 msgstr "detectar renombrados"
 
-#: diff.c:5422
+#: diff.c:5427
 msgid "omit the preimage for deletes"
 msgstr "omite la preimage para borrados"
 
-#: diff.c:5425
+#: diff.c:5430
 msgid "detect copies"
 msgstr "detectar copias"
 
-#: diff.c:5429
+#: diff.c:5434
 msgid "use unmodified files as source to find copies"
 msgstr "usa archivos no modificados como fuente para encontrar copias"
 
-#: diff.c:5431
+#: diff.c:5436
 msgid "disable rename detection"
 msgstr "deshabilita detección de renombres"
 
-#: diff.c:5434
+#: diff.c:5439
 msgid "use empty blobs as rename source"
 msgstr "usa blobs vacíos como fuente de renombre"
 
-#: diff.c:5436
+#: diff.c:5441
 msgid "continue listing the history of a file beyond renames"
 msgstr "continua listando el historial de un archivo más allá de renombres"
 
-#: diff.c:5439
+#: diff.c:5444
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3521,155 +3562,155 @@
 "previene detección de renombre/copias si el número de objetivos para "
 "renombres/copias excede el límite dado"
 
-#: diff.c:5441
+#: diff.c:5446
 msgid "Diff algorithm options"
 msgstr "Opciones de algoritmos de diff"
 
-#: diff.c:5443
+#: diff.c:5448
 msgid "produce the smallest possible diff"
 msgstr "produce el diff más pequeño posible"
 
-#: diff.c:5446
+#: diff.c:5451
 msgid "ignore whitespace when comparing lines"
 msgstr "ignorar espacios en blanco cuando comparando líneas"
 
-#: diff.c:5449
+#: diff.c:5454
 msgid "ignore changes in amount of whitespace"
 msgstr "ignorar cambios en la cantidad de líneas en blanco"
 
-#: diff.c:5452
+#: diff.c:5457
 msgid "ignore changes in whitespace at EOL"
 msgstr "ignorar cambios en espacios en blanco en EOL"
 
-#: diff.c:5455
+#: diff.c:5460
 msgid "ignore carrier-return at the end of line"
 msgstr "ignora carrier-return al final de la línea"
 
-#: diff.c:5458
+#: diff.c:5463
 msgid "ignore changes whose lines are all blank"
 msgstr "ignora cambios cuyas líneas son todas en blanco"
 
-#: diff.c:5461
+#: diff.c:5466
 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:5464
+#: diff.c:5469
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "genera un diff usando algoritmo \"patience diff\""
 
-#: diff.c:5468
+#: diff.c:5473
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "genera un diff usando algoritmo \"histogram diff\""
 
-#: diff.c:5470
+#: diff.c:5475
 msgid "<algorithm>"
 msgstr "<algoritmo>"
 
-#: diff.c:5471
+#: diff.c:5476
 msgid "choose a diff algorithm"
 msgstr "escoge un algoritmo para diff"
 
-#: diff.c:5473
+#: diff.c:5478
 msgid "<text>"
 msgstr "<texto>"
 
-#: diff.c:5474
+#: diff.c:5479
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "genera un diff usando algoritmo \"anchored diff\""
 
-#: diff.c:5476 diff.c:5485 diff.c:5488
+#: diff.c:5481 diff.c:5490 diff.c:5493
 msgid "<mode>"
 msgstr "<modo>"
 
-#: diff.c:5477
+#: diff.c:5482
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 "muestra diff por palabras usando <modo> para delimitar las palabras cambiadas"
 
-#: diff.c:5479 diff.c:5482 diff.c:5527
+#: diff.c:5484 diff.c:5487 diff.c:5532
 msgid "<regex>"
 msgstr "<regex>"
 
-#: diff.c:5480
+#: diff.c:5485
 msgid "use <regex> to decide what a word is"
 msgstr "usa <regex> para decidir que palabra es"
 
-#: diff.c:5483
+#: diff.c:5488
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "equivalente a --word-diff=color --word-diff-regex=<regex>"
 
-#: diff.c:5486
+#: diff.c:5491
 msgid "moved lines of code are colored differently"
 msgstr "líneas movidas de código están coloreadas diferente"
 
-#: diff.c:5489
+#: diff.c:5494
 msgid "how white spaces are ignored in --color-moved"
 msgstr "como espacios en blanco son ignorados en --color-moved"
 
-#: diff.c:5492
+#: diff.c:5497
 msgid "Other diff options"
 msgstr "Otras opciones de diff"
 
-#: diff.c:5494
+#: diff.c:5499
 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:5498
+#: diff.c:5503
 msgid "treat all files as text"
 msgstr "tratar todos los archivos como texto"
 
-#: diff.c:5500
+#: diff.c:5505
 msgid "swap two inputs, reverse the diff"
 msgstr "cambia dos inputs, invierte el diff"
 
-#: diff.c:5502
+#: diff.c:5507
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "termina con 1 si hubieron diferencias, de lo contrario con 0"
 
-#: diff.c:5504
+#: diff.c:5509
 msgid "disable all output of the program"
 msgstr "deshabilita todo el output del programa"
 
-#: diff.c:5506
+#: diff.c:5511
 msgid "allow an external diff helper to be executed"
 msgstr "permite la ejecución de un diff helper externo"
 
-#: diff.c:5508
+#: diff.c:5513
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "ejecuta filtros de conversión de texto externos cuando comparando binarios"
 
-#: diff.c:5510
+#: diff.c:5515
 msgid "<when>"
 msgstr "<cuando>"
 
-#: diff.c:5511
+#: diff.c:5516
 msgid "ignore changes to submodules in the diff generation"
 msgstr "ignorar cambios a submódulos en la generación de diff"
 
-#: diff.c:5514
+#: diff.c:5519
 msgid "<format>"
 msgstr "<formato>"
 
-#: diff.c:5515
+#: diff.c:5520
 msgid "specify how differences in submodules are shown"
 msgstr "especifica como son mostradas las diferencias en submódulos"
 
-#: diff.c:5519
+#: diff.c:5524
 msgid "hide 'git add -N' entries from the index"
 msgstr "ocultar entradas 'git add -N' del index"
 
-#: diff.c:5522
+#: diff.c:5527
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "trata entradas 'git add -N' como reales en el index"
 
-#: diff.c:5524
+#: diff.c:5529
 msgid "<string>"
 msgstr "<string>"
 
-#: diff.c:5525
+#: diff.c:5530
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
@@ -3677,7 +3718,7 @@
 "busca por diferencias que cambien el número de ocurrencias para el string "
 "especificado"
 
-#: diff.c:5528
+#: diff.c:5533
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3685,23 +3726,23 @@
 "busca por diferencias que cambien el número de ocurrencias para el regex "
 "especificado"
 
-#: diff.c:5531
+#: diff.c:5536
 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:5534
+#: diff.c:5539
 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:5537
+#: diff.c:5542
 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:5538
+#: diff.c:5543
 msgid "<object-id>"
 msgstr "<id-objeto>"
 
-#: diff.c:5539
+#: diff.c:5544
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
@@ -3709,33 +3750,33 @@
 "busca por diferencias que cambien el número de ocurrencias para el objeto "
 "especificado"
 
-#: diff.c:5541
+#: diff.c:5546
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5542
+#: diff.c:5547
 msgid "select files by diff type"
 msgstr "selecciona archivos por tipo de diff"
 
-#: diff.c:5544
+#: diff.c:5549
 msgid "<file>"
 msgstr "<archivo>"
 
-#: diff.c:5545
+#: diff.c:5550
 msgid "Output to a specific file"
 msgstr "Output a un archivo específico"
 
-#: diff.c:6200
+#: diff.c:6205
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 "detección de cambio de nombre inexacta fue saltada por haber muchos archivos."
 
-#: diff.c:6203
+#: diff.c:6208
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 "solo se encontraron copias de rutas modificadas por haber muchos archivos."
 
-#: diff.c:6206
+#: diff.c:6211
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3752,61 +3793,61 @@
 msgid "Performing inexact rename detection"
 msgstr "Realizando una detección de cambios de nombre inexacta"
 
-#: dir.c:555
+#: dir.c:573
 #, 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"
 
-#: dir.c:695 dir.c:724 dir.c:737
+#: dir.c:713 dir.c:742 dir.c:755
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "patrón desconocido: '%s'"
 
-#: dir.c:754 dir.c:768
+#: dir.c:772 dir.c:786
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "patrón negativo no reconocido: '%s'"
 
-#: dir.c:786
+#: dir.c:804
 #, 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:796
+#: dir.c:814
 msgid "disabling cone pattern matching"
 msgstr "deshabilitar coincidencia de patrónes cono"
 
-#: dir.c:1173
+#: dir.c:1191
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "no se puede usar %s como archivo de exclusión"
 
-#: dir.c:2275
+#: dir.c:2296
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "no se pudo abrir el directorio '%s'"
 
-#: dir.c:2575
+#: dir.c:2596
 msgid "failed to get kernel name and information"
 msgstr "falló al conseguir la información y nombre del kernel"
 
-#: dir.c:2699
+#: dir.c:2720
 msgid "untracked cache is disabled on this system or location"
 msgstr "untracked cache está desactivado en este sistema o ubicación"
 
-#: dir.c:3481
+#: dir.c:3502
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "archivo índice corrompido en repositorio %s"
 
-#: dir.c:3526 dir.c:3531
+#: dir.c:3547 dir.c:3552
 #, c-format
 msgid "could not create directories for %s"
 msgstr "no se pudo crear directorios para %s"
 
-#: dir.c:3560
+#: dir.c:3581
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "no se pudo migrar el directorio git de '%s' a '%s'"
@@ -3816,11 +3857,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr "ayuda: Esperando que tu editor cierre el archivo ...%c"
 
-#: entry.c:178
+#: entry.c:177
 msgid "Filtering content"
 msgstr "Filtrando contenido"
 
-#: entry.c:479
+#: entry.c:478
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "no se pudo establecer el archivo '%s'"
@@ -3840,228 +3881,246 @@
 msgid "too many args to run %s"
 msgstr "demasiados argumentos para correr %s"
 
-#: fetch-pack.c:151
+#: fetch-pack.c:152
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: lista poco profunda esperada"
 
-#: fetch-pack.c:154
+#: fetch-pack.c:155
 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"
 
-#: fetch-pack.c:165
+#: fetch-pack.c:166
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack: se esperaba ACK/NAK, se obtuvo un flush packet"
 
-#: fetch-pack.c:185
+#: fetch-pack.c:186
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack: se esperaba ACK/NAK, se obtuvo '%s'"
 
-#: fetch-pack.c:196
+#: fetch-pack.c:197
 msgid "unable to write to remote"
 msgstr "no se puede escribir al remoto"
 
-#: fetch-pack.c:258
+#: fetch-pack.c:259
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc requiere multi_ack_detailed"
 
-#: fetch-pack.c:357 fetch-pack.c:1364
+#: fetch-pack.c:358 fetch-pack.c:1408
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "línea poco profunda inválida: %s"
 
-#: fetch-pack.c:363 fetch-pack.c:1370
+#: fetch-pack.c:364 fetch-pack.c:1414
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "línea superficial inválida: %s"
 
-#: fetch-pack.c:365 fetch-pack.c:1372
+#: fetch-pack.c:366 fetch-pack.c:1416
 #, c-format
 msgid "object not found: %s"
 msgstr "objeto no encontrado: %s"
 
-#: fetch-pack.c:368 fetch-pack.c:1375
+#: fetch-pack.c:369 fetch-pack.c:1419
 #, c-format
 msgid "error in object: %s"
 msgstr "error en objeto: %s"
 
-#: fetch-pack.c:370 fetch-pack.c:1377
+#: fetch-pack.c:371 fetch-pack.c:1421
 #, c-format
 msgid "no shallow found: %s"
 msgstr "superficie no encontrada: %s"
 
-#: fetch-pack.c:373 fetch-pack.c:1381
+#: fetch-pack.c:374 fetch-pack.c:1425
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "se esperaba shallow/unshallow, se obtuvo %s"
 
-#: fetch-pack.c:415
+#: fetch-pack.c:416
 #, c-format
 msgid "got %s %d %s"
 msgstr "se obtuvo %s %d %s"
 
-#: fetch-pack.c:432
+#: fetch-pack.c:433
 #, c-format
 msgid "invalid commit %s"
 msgstr "commit inválido %s"
 
-#: fetch-pack.c:463
+#: fetch-pack.c:464
 msgid "giving up"
 msgstr "rindiéndose"
 
-#: fetch-pack.c:476 progress.c:340
+#: fetch-pack.c:477 progress.c:336
 msgid "done"
 msgstr "listo"
 
-#: fetch-pack.c:488
+#: fetch-pack.c:489
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "se obtuvo %s (%d) %s"
 
-#: fetch-pack.c:534
+#: fetch-pack.c:535
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Marcando %s como completa"
 
-#: fetch-pack.c:755
+#: fetch-pack.c:756
 #, c-format
 msgid "already have %s (%s)"
 msgstr "ya se tiene %s (%s)"
 
-#: fetch-pack.c:819
+#: fetch-pack.c:821
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: no se puede extraer un demultiplexor de banda lateral"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:829
 msgid "protocol error: bad pack header"
 msgstr "error de protocolo: paquete de header erróneo"
 
-#: fetch-pack.c:901
+#: fetch-pack.c:910
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: no se puede quitar %s"
 
-#: fetch-pack.c:917
+#: fetch-pack.c:927
 #, c-format
 msgid "%s failed"
 msgstr "%s falló"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:929
 msgid "error in sideband demultiplexer"
 msgstr "error en demultiplexor de banda lateral"
 
-#: fetch-pack.c:966
+#: fetch-pack.c:976
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Versión de servidor es %.*s"
 
-#: fetch-pack.c:971 fetch-pack.c:977 fetch-pack.c:980 fetch-pack.c:986
-#: fetch-pack.c:990 fetch-pack.c:994 fetch-pack.c:998 fetch-pack.c:1002
-#: fetch-pack.c:1006 fetch-pack.c:1010 fetch-pack.c:1014 fetch-pack.c:1018
-#: fetch-pack.c:1024 fetch-pack.c:1030 fetch-pack.c:1035 fetch-pack.c:1040
+#: fetch-pack.c:981 fetch-pack.c:987 fetch-pack.c:990 fetch-pack.c:996
+#: fetch-pack.c:1000 fetch-pack.c:1004 fetch-pack.c:1008 fetch-pack.c:1012
+#: fetch-pack.c:1016 fetch-pack.c:1020 fetch-pack.c:1024 fetch-pack.c:1028
+#: fetch-pack.c:1034 fetch-pack.c:1040 fetch-pack.c:1045 fetch-pack.c:1050
 #, c-format
 msgid "Server supports %s"
 msgstr "El servidor soporta %s"
 
-#: fetch-pack.c:973
+#: fetch-pack.c:983
 msgid "Server does not support shallow clients"
 msgstr "El servidor no soporta clientes superficiales"
 
-#: fetch-pack.c:1033
+#: fetch-pack.c:1043
 msgid "Server does not support --shallow-since"
 msgstr "El servidor no soporta --shalow-since"
 
-#: fetch-pack.c:1038
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-exclude"
 msgstr "El servidor no soporta --shalow-exclude"
 
-#: fetch-pack.c:1042
+#: fetch-pack.c:1052
 msgid "Server does not support --deepen"
 msgstr "El servidor no soporta --deepen"
 
-#: fetch-pack.c:1059
+#: fetch-pack.c:1054
+msgid "Server does not support this repository's object format"
+msgstr "El servidor no soporta el formato de objetos de este repositorio"
+
+#: fetch-pack.c:1071
 msgid "no common commits"
 msgstr "no hay commits comunes"
 
-#: fetch-pack.c:1071 fetch-pack.c:1563
+#: fetch-pack.c:1083 fetch-pack.c:1639
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: fetch falló."
 
 #: fetch-pack.c:1211
+#, c-format
+msgid "mismatched algorithms: client %s; server %s"
+msgstr "algoritmos no compatibles: cliente %s; servidor %s"
+
+#: fetch-pack.c:1215
+#, c-format
+msgid "the server does not support algorithm '%s'"
+msgstr "servidor no soporta el algoritmo '%s'"
+
+#: fetch-pack.c:1235
 msgid "Server does not support shallow requests"
 msgstr "El servidor no soporta peticiones superficiales"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1242
 msgid "Server supports filter"
 msgstr "El servidor soporta filtro"
 
-#: fetch-pack.c:1242
+#: fetch-pack.c:1286
 msgid "unable to write request to remote"
 msgstr "no se puede escribir request al remoto"
 
-#: fetch-pack.c:1260
+#: fetch-pack.c:1304
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "error leyendo sección header '%s'"
 
-#: fetch-pack.c:1266
+#: fetch-pack.c:1310
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "se esperaba '%s', se recibió '%s'"
 
-#: fetch-pack.c:1327
+#: fetch-pack.c:1371
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "línea de confirmación inesperada: '%s'"
 
-#: fetch-pack.c:1332
+#: fetch-pack.c:1376
 #, c-format
 msgid "error processing acks: %d"
 msgstr "error procesando acks: %d"
 
-#: fetch-pack.c:1342
+#: fetch-pack.c:1386
 msgid "expected packfile to be sent after 'ready'"
 msgstr "espere que el packfile sea mandado luego del 'listo'"
 
-#: fetch-pack.c:1344
+#: fetch-pack.c:1388
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "espere que ninguna otra sección sea enviada luego del 'listo'"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1430
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "error procesando información superficial: %d"
 
-#: fetch-pack.c:1433
+#: fetch-pack.c:1477
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "se esperaba wanted-ref, se obtuvo '%s'"
 
-#: fetch-pack.c:1438
+#: fetch-pack.c:1482
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "wanted-ref inesperado: '%s'"
 
-#: fetch-pack.c:1443
+#: fetch-pack.c:1487
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "error procesando refs deseadas: %d"
 
-#: fetch-pack.c:1789
+#: fetch-pack.c:1517
+msgid "git fetch-pack: expected response end packet"
+msgstr "git fetch-pack: se espera un paquete final de respuesta"
+
+#: fetch-pack.c:1921
 msgid "no matching remote head"
 msgstr "no concuerda el head remoto"
 
-#: fetch-pack.c:1812 builtin/clone.c:692
+#: fetch-pack.c:1944 builtin/clone.c:692
 msgid "remote did not send all necessary objects"
 msgstr "remoto no mando todos los objetos necesarios"
 
-#: fetch-pack.c:1839
+#: fetch-pack.c:1971
 #, c-format
 msgid "no such remote ref %s"
 msgstr "no existe ref remota %s"
 
-#: fetch-pack.c:1842
+#: fetch-pack.c:1974
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "El servidor no permite solicitudes de objetos inadvertidos %s"
@@ -4097,7 +4156,7 @@
 msgid "'%s': unable to read %s"
 msgstr "'%s': no es posible leer %s"
 
-#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:82
+#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:89
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
@@ -4241,16 +4300,16 @@
 "\n"
 "Los comandos más similares son"
 
-#: help.c:653
+#: help.c:654
 msgid "git version [<options>]"
 msgstr "git versión [<opciones>]"
 
-#: help.c:708
+#: help.c:709
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:712
+#: help.c:713
 msgid ""
 "\n"
 "Did you mean this?"
@@ -4349,6 +4408,12 @@
 msgid "multiple filter-specs cannot be combined"
 msgstr "no se pueden combinar múltiples tipos de especificaciones de filtro"
 
+#: list-objects-filter-options.c:330
+msgid "unable to upgrade repository format to support partial clone"
+msgstr ""
+"no es posible actualizar el formato del repositorio para soportar clonado "
+"parcial"
+
 #: list-objects-filter.c:492
 #, c-format
 msgid "unable to access sparse blob in '%s'"
@@ -4588,7 +4653,7 @@
 msgid "renamed"
 msgstr "renombrado"
 
-#: merge-recursive.c:1577 merge-recursive.c:2472 merge-recursive.c:3117
+#: merge-recursive.c:1577 merge-recursive.c:2484 merge-recursive.c:3129
 #, c-format
 msgid "Refusing to lose dirty file at %s"
 msgstr "Rehusando perder el archivo sucio en %s"
@@ -4630,14 +4695,14 @@
 msgid " (left unresolved)"
 msgstr " (dejado sin resolver)"
 
-#: merge-recursive.c:1793
+#: merge-recursive.c:1805
 #, 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:2056
+#: merge-recursive.c:2068
 #, c-format
 msgid ""
 "CONFLICT (directory rename split): Unclear where to place %s because "
@@ -4648,7 +4713,7 @@
 "colocar %s porque el directorio %s fue renombrado a otros múltiples "
 "directorios, sin ningún que contenga la mayoría de archivos."
 
-#: merge-recursive.c:2088
+#: merge-recursive.c:2100
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -4658,7 +4723,7 @@
 "existente en %s se interpone con el cambio de nombres implícito, poniendo "
 "la(s) siguiente(s) ruta(s) aquí: %s."
 
-#: merge-recursive.c:2098
+#: merge-recursive.c:2110
 #, c-format
 msgid ""
 "CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
@@ -4667,7 +4732,7 @@
 "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"
 
-#: merge-recursive.c:2190
+#: merge-recursive.c:2202
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
@@ -4676,7 +4741,7 @@
 "CONFLICTO (renombrar/renombrar): Renombrar directorio %s->%s en %s. "
 "Renombrar directorio %s->%s en %s"
 
-#: merge-recursive.c:2435
+#: merge-recursive.c:2447
 #, c-format
 msgid ""
 "WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
@@ -4685,52 +4750,52 @@
 "PELIGRO: Evitando aplicar %s -> %s renombrado a %s, porque %s mismo fue "
 "renombrado."
 
-#: merge-recursive.c:2961
+#: merge-recursive.c:2973
 #, c-format
 msgid "cannot read object %s"
 msgstr "no se pudo leer el objeto %s"
 
-#: merge-recursive.c:2964
+#: merge-recursive.c:2976
 #, c-format
 msgid "object %s is not a blob"
 msgstr "objeto %s no es un blob"
 
-#: merge-recursive.c:3028
+#: merge-recursive.c:3040
 msgid "modify"
 msgstr "modificar"
 
-#: merge-recursive.c:3028
+#: merge-recursive.c:3040
 msgid "modified"
 msgstr "modificado"
 
-#: merge-recursive.c:3040
+#: merge-recursive.c:3052
 msgid "content"
 msgstr "contenido"
 
-#: merge-recursive.c:3044
+#: merge-recursive.c:3056
 msgid "add/add"
 msgstr "agregar/agregar"
 
-#: merge-recursive.c:3067
+#: merge-recursive.c:3079
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Saltado %s (fusionado como existente)"
 
-#: merge-recursive.c:3089 git-submodule.sh:985
+#: merge-recursive.c:3101 git-submodule.sh:959
 msgid "submodule"
 msgstr "submódulo"
 
-#: merge-recursive.c:3090
+#: merge-recursive.c:3102
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "CONFLICTO (%s): Conflicto de fusión en %s"
 
-#: merge-recursive.c:3120
+#: merge-recursive.c:3132
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Agregando más bien como %s"
 
-#: merge-recursive.c:3203
+#: merge-recursive.c:3215
 #, c-format
 msgid ""
 "Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -4739,7 +4804,7 @@
 "Path actualizado: %s agregado en %s dentro de un directorio que fue "
 "renombrado en %s; moviéndolo a %s."
 
-#: merge-recursive.c:3206
+#: merge-recursive.c:3218
 #, c-format
 msgid ""
 "CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -4748,7 +4813,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-recursive.c:3210
+#: merge-recursive.c:3222
 #, c-format
 msgid ""
 "Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -4757,7 +4822,7 @@
 "Path actualizado: %s renombrado a %s en %s, dentro de un directorio que fue "
 "renombrado en %s; moviéndolo a %s."
 
-#: merge-recursive.c:3213
+#: merge-recursive.c:3225
 #, c-format
 msgid ""
 "CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -4767,61 +4832,61 @@
 "directorio que fue renombrado en %s, sugiriendo que tal vez debería ser "
 "movido a %s."
 
-#: merge-recursive.c:3327
+#: merge-recursive.c:3339
 #, c-format
 msgid "Removing %s"
 msgstr "Eliminando %s"
 
-#: merge-recursive.c:3350
+#: merge-recursive.c:3362
 msgid "file/directory"
 msgstr "archivo/directorio"
 
-#: merge-recursive.c:3355
+#: merge-recursive.c:3367
 msgid "directory/file"
 msgstr "directorio/archivo"
 
-#: merge-recursive.c:3362
+#: merge-recursive.c:3374
 #, 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:3371
+#: merge-recursive.c:3383
 #, c-format
 msgid "Adding %s"
 msgstr "Agregando %s"
 
-#: merge-recursive.c:3380
+#: merge-recursive.c:3392
 #, c-format
 msgid "CONFLICT (add/add): Merge conflict in %s"
 msgstr "CONFLICTO (add/add): Conflicto de merge en %s"
 
-#: merge-recursive.c:3424
+#: merge-recursive.c:3436
 msgid "Already up to date!"
 msgstr "¡Ya está actualizado!"
 
-#: merge-recursive.c:3433
+#: merge-recursive.c:3445
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "falló la fusión de los árboles %s y %s"
 
-#: merge-recursive.c:3537
+#: merge-recursive.c:3549
 msgid "Merging:"
 msgstr "Fusionando:"
 
-#: merge-recursive.c:3550
+#: merge-recursive.c:3562
 #, 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:3600
+#: merge-recursive.c:3612
 msgid "merge returned no commit"
 msgstr "la fusión no devolvió ningún commit"
 
-#: merge-recursive.c:3659
+#: merge-recursive.c:3671
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4831,12 +4896,12 @@
 "merge:\n"
 "  %s"
 
-#: merge-recursive.c:3756
+#: merge-recursive.c:3768
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "No se pudo analizar el objeto '%s'"
 
-#: merge-recursive.c:3774 builtin/merge.c:705 builtin/merge.c:885
+#: merge-recursive.c:3786 builtin/merge.c:705 builtin/merge.c:885
 msgid "Unable to write index."
 msgstr "Incapaz de escribir el índice."
 
@@ -4845,7 +4910,7 @@
 msgstr "falló al leer la cache"
 
 #: merge.c:108 rerere.c:720 builtin/am.c:1878 builtin/am.c:1912
-#: builtin/checkout.c:559 builtin/checkout.c:824 builtin/clone.c:816
+#: builtin/checkout.c:559 builtin/checkout.c:822 builtin/clone.c:816
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "no es posible escribir el archivo índice"
@@ -5096,22 +5161,22 @@
 msgid "hash mismatch %s"
 msgstr "hash no concuerda %s"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2135
+#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2184
 #, c-format
 msgid "unable to get size of %s"
 msgstr "no se pudo obtener el tamaño de %s"
 
-#: packfile.c:629
+#: packfile.c:630
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "offset antes del final del paquete (broken .idx?)"
 
-#: packfile.c:1899
+#: packfile.c:1900
 #, 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:1903
+#: packfile.c:1904
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
@@ -5317,44 +5382,48 @@
 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)"
+
+#: pkt-line.c:113
 msgid "flush packet write failed"
 msgstr "limpieza de escritura de paquetes falló"
 
-#: pkt-line.c:146 pkt-line.c:232
+#: pkt-line.c:153 pkt-line.c:239
 msgid "protocol error: impossibly long line"
 msgstr "error de protocolo: línea imposiblemente larga"
 
-#: pkt-line.c:162 pkt-line.c:164
+#: pkt-line.c:169 pkt-line.c:171
 msgid "packet write with format failed"
 msgstr "escritura de paquetes con formato falló"
 
-#: pkt-line.c:196
+#: pkt-line.c:203
 msgid "packet write failed - data exceeds max packet size"
 msgstr "fallo al escribir paquete - la data excede al tamaño máximo de paquete"
 
-#: pkt-line.c:203 pkt-line.c:210
+#: pkt-line.c:210 pkt-line.c:217
 msgid "packet write failed"
 msgstr "escritura de paquetes falló"
 
-#: pkt-line.c:295
+#: pkt-line.c:302
 msgid "read error"
 msgstr "error de lectura"
 
-#: pkt-line.c:303
+#: pkt-line.c:310
 msgid "the remote end hung up unexpectedly"
 msgstr "el remoto se colgó de manera inesperada"
 
-#: pkt-line.c:331
+#: pkt-line.c:338
 #, c-format
 msgid "protocol error: bad line length character: %.4s"
 msgstr "error de protocolo: mal caracter de largo de línea: %.4s"
 
-#: pkt-line.c:341 pkt-line.c:346
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
 msgid "protocol error: bad line length %d"
 msgstr "error de protocolo: mal largo de línea %d"
 
-#: pkt-line.c:362
+#: pkt-line.c:373
 #, c-format
 msgid "remote error: %s"
 msgstr "error remoto: %s"
@@ -5533,7 +5602,7 @@
 
 #: read-cache.c:1983 read-cache.c:2271 rerere.c:565 rerere.c:599 rerere.c:1111
 #: submodule.c:1619 builtin/add.c:532 builtin/check-ignore.c:181
-#: builtin/checkout.c:488 builtin/checkout.c:676 builtin/clean.c:961
+#: builtin/checkout.c:488 builtin/checkout.c:674 builtin/clean.c:991
 #: builtin/commit.c:364 builtin/diff-tree.c:121 builtin/grep.c:507
 #: builtin/mv.c:145 builtin/reset.c:247 builtin/rm.c:290
 #: builtin/submodule--helper.c:332
@@ -5590,7 +5659,7 @@
 msgid "broken index, expect %s in %s, got %s"
 msgstr "index roto, se esperaba %s en %s, se obtuvo %s"
 
-#: read-cache.c:3026 strbuf.c:1176 wrapper.c:622 builtin/merge.c:1130
+#: read-cache.c:3026 strbuf.c:1171 wrapper.c:630 builtin/merge.c:1130
 #, c-format
 msgid "could not close '%s'"
 msgstr "no se pudo cerrar '%s'"
@@ -5727,7 +5796,7 @@
 "\n"
 
 #: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3463
-#: sequencer.c:3489 sequencer.c:5248 builtin/fsck.c:346 builtin/rebase.c:258
+#: sequencer.c:3489 sequencer.c:5248 builtin/fsck.c:347 builtin/rebase.c:258
 #, c-format
 msgid "could not write '%s'"
 msgstr "no se pudo escribir '%s'"
@@ -5772,7 +5841,7 @@
 msgid "could not read '%s'."
 msgstr "no se puede leer '%s'."
 
-#: ref-filter.c:42 wt-status.c:1936
+#: ref-filter.c:42 wt-status.c:1977
 msgid "gone"
 msgstr "desaparecido"
 
@@ -5997,7 +6066,7 @@
 msgid "ignoring ref with broken name %s"
 msgstr "ignorando referencia con nombre roto %s"
 
-#: ref-filter.c:2095 refs.c:625
+#: ref-filter.c:2095 refs.c:657
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "ignorando referencia rota %s"
@@ -6027,94 +6096,108 @@
 msgid "option `%s' must point to a commit"
 msgstr "opción '%s' debe apuntar a un commit"
 
-#: refs.c:262
+#: refs.c:264
 #, c-format
 msgid "%s does not point to a valid object!"
 msgstr "¡%s no apunta a ningún objeto válido!"
 
-#: refs.c:623
+#: refs.c:572
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr "no se pudo recibir `%s`"
+
+#: refs.c:579
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "Nombre de rama inválido: %s = %s"
+
+#: refs.c:655
 #, c-format
 msgid "ignoring dangling symref %s"
 msgstr "ignorando referencia rota %s"
 
-#: refs.c:760
+#: refs.c:792
 #, c-format
 msgid "could not open '%s' for writing: %s"
 msgstr "no se pudo abrir '%s' para escritura: %s"
 
-#: refs.c:770 refs.c:821
+#: refs.c:802 refs.c:853
 #, c-format
 msgid "could not read ref '%s'"
 msgstr "no se pudo leer la referencia '%s'"
 
-#: refs.c:776
+#: refs.c:808
 #, c-format
 msgid "ref '%s' already exists"
 msgstr "ref '%s' ya existe"
 
-#: refs.c:781
+#: refs.c:813
 #, c-format
 msgid "unexpected object ID when writing '%s'"
 msgstr "ID de objecto inesperado al escribir '%s'"
 
-#: refs.c:789 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
-#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1173
-#: wrapper.c:620
+#: refs.c:821 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
+#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1168
+#: wrapper.c:628
 #, c-format
 msgid "could not write to '%s'"
 msgstr "no se pudo escribir en '%s'"
 
-#: refs.c:816 strbuf.c:1171 wrapper.c:188 wrapper.c:358 builtin/am.c:719
+#: refs.c:848 strbuf.c:1166 wrapper.c:196 wrapper.c:366 builtin/am.c:719
 #: builtin/rebase.c:852
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "no se pudo abrir '%s' para escritura"
 
-#: refs.c:823
+#: refs.c:855
 #, c-format
 msgid "unexpected object ID when deleting '%s'"
 msgstr "ID de objecto inesperado al borrar '%s'"
 
-#: refs.c:954
+#: refs.c:986
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr "log de ref %s tiene un vacío tras %s"
 
-#: refs.c:960
+#: refs.c:992
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr "log de ref %s finalizado inesperadamente en %s"
 
-#: refs.c:1019
+#: refs.c:1051
 #, c-format
 msgid "log for %s is empty"
 msgstr "log de %s está vacío"
 
-#: refs.c:1111
+#: refs.c:1143
 #, c-format
 msgid "refusing to update ref with bad name '%s'"
 msgstr "rehusando actualizar ref con mal nombre '%s'"
 
-#: refs.c:1187
+#: refs.c:1219
 #, c-format
 msgid "update_ref failed for ref '%s': %s"
 msgstr "update_ref falló para ref '%s': %s"
 
-#: refs.c:1979
+#: refs.c:2011
 #, c-format
 msgid "multiple updates for ref '%s' not allowed"
 msgstr "múltiples actualizaciones para ref '%s' no permitidas"
 
-#: refs.c:2011
+#: refs.c:2098
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "actualizaciones de ref prohibidas dentro de ambiente de cuarentena"
 
-#: refs.c:2107 refs.c:2137
+#: refs.c:2109
+msgid "ref updates aborted by hook"
+msgstr "ref update abortado por el hook"
+
+#: refs.c:2209 refs.c:2239
 #, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr "'%s' existe; no se puede crear '%s'"
 
-#: refs.c:2113 refs.c:2148
+#: refs.c:2215 refs.c:2250
 #, c-format
 msgid "cannot process '%s' and '%s' at the same time"
 msgstr "no se puede procesar '%s' y '%s' al mismo tiempo"
@@ -6401,7 +6484,7 @@
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr "  (usa \"git pull\" para fusionar la rama remota en la tuya)\n"
 
-#: remote.c:2233
+#: remote.c:2241
 #, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr "no se puede leer el nombre de objeto '%s'"
@@ -6528,20 +6611,20 @@
 msgid "failed to find tree of %s"
 msgstr "falló al encontrar árbol de %s"
 
-#: revision.c:2655
+#: revision.c:2661
 msgid "your current branch appears to be broken"
 msgstr "tu rama actual parece estar rota"
 
-#: revision.c:2658
+#: revision.c:2664
 #, 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:2866
+#: revision.c:2873
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent es incompatible con --bisect"
 
-#: revision.c:2870
+#: revision.c:2877
 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"
 
@@ -6583,11 +6666,15 @@
 msgid "failed to sign the push certificate"
 msgstr "falló al firmar el certificado de push"
 
-#: send-pack.c:399
+#: send-pack.c:394
+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:403
 msgid "the receiving end does not support --signed push"
 msgstr "el final receptor no soporta --signed push"
 
-#: send-pack.c:401
+#: send-pack.c:405
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -6595,11 +6682,11 @@
 "no se manda un certificado de push ya que el destino no soporta push firmado "
 "(--signed )"
 
-#: send-pack.c:413
+#: send-pack.c:417
 msgid "the receiving end does not support --atomic push"
 msgstr "el destino no soporta push atómicos (--atomic)"
 
-#: send-pack.c:418
+#: send-pack.c:422
 msgid "the receiving end does not support push options"
 msgstr "el destino no soporta opciones de push"
 
@@ -6720,7 +6807,7 @@
 msgid "unable to dequote value of '%s'"
 msgstr "no es posible dequote para '%s'"
 
-#: sequencer.c:785 wrapper.c:190 wrapper.c:360 builtin/am.c:710
+#: sequencer.c:785 wrapper.c:198 wrapper.c:368 builtin/am.c:710
 #: builtin/am.c:802 builtin/merge.c:1125 builtin/rebase.c:896
 #, c-format
 msgid "could not open '%s' for reading"
@@ -7560,85 +7647,85 @@
 msgid "this operation must be run in a work tree"
 msgstr "esta operación debe ser realizada en un árbol de trabajo"
 
-#: setup.c:569
+#: setup.c:604
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Se esperaba versión de git repo  <= %d, encontrada %d"
 
-#: setup.c:577
+#: setup.c:612
 msgid "unknown repository extensions found:"
 msgstr "se encontró extensión de repositorio desconocida:"
 
-#: setup.c:596
+#: setup.c:631
 #, c-format
 msgid "error opening '%s'"
 msgstr "error abriendo '%s'"
 
-#: setup.c:598
+#: setup.c:633
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "muy grande para ser un archivo .git: '%s'"
 
-#: setup.c:600
+#: setup.c:635
 #, c-format
 msgid "error reading %s"
 msgstr "error leyendo %s"
 
-#: setup.c:602
+#: setup.c:637
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "formato gitfile inválido: %s"
 
-#: setup.c:604
+#: setup.c:639
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "no hay ruta en gitfile: %s"
 
-#: setup.c:606
+#: setup.c:641
 #, c-format
 msgid "not a git repository: %s"
 msgstr "no es un repositorio git: %s"
 
-#: setup.c:708
+#: setup.c:743
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' muy grande"
 
-#: setup.c:722
+#: setup.c:757
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "no es un repositorio git: '%s'"
 
-#: setup.c:751 setup.c:753 setup.c:784
+#: setup.c:786 setup.c:788 setup.c:819
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "no se puede aplicar chdir a '%s'"
 
-#: setup.c:756 setup.c:812 setup.c:822 setup.c:861 setup.c:869
+#: setup.c:791 setup.c:847 setup.c:857 setup.c:896 setup.c:904
 msgid "cannot come back to cwd"
 msgstr "no se puede volver a cwd"
 
-#: setup.c:883
+#: setup.c:918
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "falló al determinar '%*s%s%s'"
 
-#: setup.c:1121
+#: setup.c:1156
 msgid "Unable to read current working directory"
 msgstr "Incapaz de leer el directorio de trabajo actual"
 
-#: setup.c:1130 setup.c:1136
+#: setup.c:1165 setup.c:1171
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "no se puede cambiar a '%s'"
 
-#: setup.c:1141
+#: setup.c:1176
 #, 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:1147
+#: setup.c:1182
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -7648,7 +7735,7 @@
 "Parando en el límite del sistema de archivos "
 "(GIT_DISCOVERY_ACROSS_FILESYSTEM no establecido)."
 
-#: setup.c:1258
+#: setup.c:1293
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -7657,15 +7744,15 @@
 "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:1304
+#: setup.c:1340
 msgid "open /dev/null or dup failed"
 msgstr "falló al abrir /dev/null o dup"
 
-#: setup.c:1319
+#: setup.c:1355
 msgid "fork failed"
 msgstr "falló fork"
 
-#: setup.c:1324
+#: setup.c:1360
 msgid "setsid failed"
 msgstr "falló setsid"
 
@@ -7849,7 +7936,7 @@
 msgid "confused by unstable object source data for %s"
 msgstr "confundido por fuente de data de objetos inestable para %s"
 
-#: sha1-file.c:1906 builtin/pack-objects.c:1055
+#: sha1-file.c:1906 builtin/pack-objects.c:1085
 #, c-format
 msgid "failed utime() on %s"
 msgstr "falló utime() en %s"
@@ -8027,43 +8114,43 @@
 msgstr "nombre de objeto no válido: '%.*s'."
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
-#: strbuf.c:853
+#: strbuf.c:848
 #, c-format
 msgid "%u.%2.2u GiB"
 msgstr "%u.%2.2u GiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
-#: strbuf.c:855
+#: strbuf.c:850
 #, c-format
 msgid "%u.%2.2u GiB/s"
 msgstr "%u.%2.2u GiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte
-#: strbuf.c:863
+#: strbuf.c:858
 #, c-format
 msgid "%u.%2.2u MiB"
 msgstr "%u.%2.2u MiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
-#: strbuf.c:865
+#: strbuf.c:860
 #, c-format
 msgid "%u.%2.2u MiB/s"
 msgstr "%u.%2.2u MiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte
-#: strbuf.c:872
+#: strbuf.c:867
 #, c-format
 msgid "%u.%2.2u KiB"
 msgstr "%u.%2.2u KiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
-#: strbuf.c:874
+#: strbuf.c:869
 #, c-format
 msgid "%u.%2.2u KiB/s"
 msgstr "%u.%2.2u KiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte
-#: strbuf.c:880
+#: strbuf.c:875
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -8071,14 +8158,14 @@
 msgstr[1] "%u bytes"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte/second
-#: strbuf.c:882
+#: strbuf.c:877
 #, c-format
 msgid "%u byte/s"
 msgid_plural "%u bytes/s"
 msgstr[0] "%u bytes/s"
 msgstr[1] "%u bytes/s"
 
-#: strbuf.c:1180
+#: strbuf.c:1175
 #, c-format
 msgid "could not edit '%s'"
 msgstr "no se pudo editar '%s'"
@@ -8326,7 +8413,7 @@
 msgid "could not read from stdin"
 msgstr "no se pudo leer desde stdin"
 
-#: trailer.c:1011 wrapper.c:665
+#: trailer.c:1011 wrapper.c:673
 #, c-format
 msgid "could not stat %s"
 msgstr "no se pudo definir %s"
@@ -8350,20 +8437,20 @@
 msgid "could not rename temporary file to %s"
 msgstr "no se pudo renombrar el archivo temporal a %s"
 
-#: transport-helper.c:61 transport-helper.c:90
+#: transport-helper.c:62 transport-helper.c:91
 msgid "full write to remote helper failed"
 msgstr "escritura total al helper remoto falló"
 
-#: transport-helper.c:144
+#: transport-helper.c:145
 #, c-format
 msgid "unable to find remote helper for '%s'"
 msgstr "no es posible encontrar helper remoto para '%s'"
 
-#: transport-helper.c:160 transport-helper.c:571
+#: 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"
 
-#: transport-helper.c:211
+#: transport-helper.c:214
 #, c-format
 msgid ""
 "unknown mandatory capability %s; this remote helper probably needs newer "
@@ -8372,157 +8459,162 @@
 "capacidad mandatoria desconocida %s; este helper remoto probablemente "
 "necesita una nueva versión de Git"
 
-#: transport-helper.c:217
+#: transport-helper.c:220
 msgid "this remote helper should implement refspec capability"
 msgstr "este helper remoto debería implementar capacidad refspec"
 
-#: transport-helper.c:284 transport-helper.c:425
+#: transport-helper.c:287 transport-helper.c:429
 #, c-format
 msgid "%s unexpectedly said: '%s'"
 msgstr "%s dijo inesperadamente: '%s'"
 
-#: transport-helper.c:414
+#: transport-helper.c:417
 #, c-format
 msgid "%s also locked %s"
 msgstr "%s también bloqueó %s"
 
-#: transport-helper.c:493
+#: transport-helper.c:497
 msgid "couldn't run fast-import"
 msgstr "no se pudo ejecutar fast-import"
 
-#: transport-helper.c:516
+#: transport-helper.c:520
 msgid "error while running fast-import"
 msgstr "error al ejecutar fast-import"
 
-#: transport-helper.c:545 transport-helper.c:1135
+#: transport-helper.c:549 transport-helper.c:1156
 #, c-format
 msgid "could not read ref %s"
 msgstr "no se pudo leer la referencia %s"
 
-#: transport-helper.c:590
+#: transport-helper.c:594
 #, c-format
 msgid "unknown response to connect: %s"
 msgstr "respuesta para conectar desconocida: %s"
 
-#: transport-helper.c:612
+#: transport-helper.c:616
 msgid "setting remote service path not supported by protocol"
 msgstr "configurando servicio de ruta remota no soportado por el protocolo"
 
-#: transport-helper.c:614
+#: transport-helper.c:618
 msgid "invalid remote service path"
 msgstr "ruta de servicio remoto inválida"
 
-#: transport-helper.c:657 transport.c:1339
+#: transport-helper.c:661 transport.c:1347
 msgid "operation not supported by protocol"
 msgstr "operación no soportada por protocolo"
 
-#: transport-helper.c:660
+#: transport-helper.c:664
 #, c-format
 msgid "can't connect to subservice %s"
 msgstr "no se puede conectar al subservicio %s"
 
-#: transport-helper.c:736
+#: transport-helper.c:740
 #, c-format
 msgid "expected ok/error, helper said '%s'"
 msgstr "se esperaba ok/error, helper dijo '%s'"
 
-#: transport-helper.c:789
+#: transport-helper.c:793
 #, c-format
 msgid "helper reported unexpected status of %s"
 msgstr "helper reportó estado inesperado de %s"
 
-#: transport-helper.c:850
+#: transport-helper.c:854
 #, c-format
 msgid "helper %s does not support dry-run"
 msgstr "helper %s no soporta dry-run"
 
-#: transport-helper.c:853
+#: transport-helper.c:857
 #, c-format
 msgid "helper %s does not support --signed"
 msgstr "helper %s no soporta --signed"
 
-#: transport-helper.c:856
+#: transport-helper.c:860
 #, c-format
 msgid "helper %s does not support --signed=if-asked"
 msgstr "helper %s no soporta --signed=if-asked"
 
-#: transport-helper.c:861
+#: transport-helper.c:865
 #, c-format
 msgid "helper %s does not support --atomic"
 msgstr "helper %s no soporta --atomic"
 
-#: transport-helper.c:867
+#: transport-helper.c:871
 #, c-format
 msgid "helper %s does not support 'push-option'"
 msgstr "helper %s no soporta 'push-option'"
 
-#: transport-helper.c:966
+#: transport-helper.c:970
 msgid "remote-helper doesn't support push; refspec needed"
 msgstr "remote-helper no soporta push; se necesita refspec"
 
-#: transport-helper.c:971
+#: transport-helper.c:975
 #, c-format
 msgid "helper %s does not support 'force'"
 msgstr "helper %s no soporta 'force'"
 
-#: transport-helper.c:1018
+#: transport-helper.c:1022
 msgid "couldn't run fast-export"
 msgstr "no se pudo ejecutar fast-export"
 
-#: transport-helper.c:1023
+#: transport-helper.c:1027
 msgid "error while running fast-export"
 msgstr "error al ejecutar fast-export"
 
-#: transport-helper.c:1048
+#: transport-helper.c:1052
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
-"Perhaps you should specify a branch such as 'master'.\n"
+"Perhaps you should specify a branch.\n"
 msgstr ""
 "No hay refs comunes y ninguno especificado; no se hace nada.\n"
-"Tal vez deberías especificar un branch como 'master'.\n"
+"Tal vez deberías especificar un branch.\n"
 
-#: transport-helper.c:1121
+#: transport-helper.c:1133
+#, c-format
+msgid "unsupported object format '%s'"
+msgstr "formado de objeto no soportado '%s'"
+
+#: transport-helper.c:1142
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "respuesta malformada en lista de refs: %s"
 
-#: transport-helper.c:1273
+#: transport-helper.c:1294
 #, c-format
 msgid "read(%s) failed"
 msgstr "leer(%s) falló"
 
-#: transport-helper.c:1300
+#: transport-helper.c:1321
 #, c-format
 msgid "write(%s) failed"
 msgstr "escribir(%s) falló"
 
-#: transport-helper.c:1349
+#: transport-helper.c:1370
 #, c-format
 msgid "%s thread failed"
 msgstr "hilo %s falló"
 
-#: transport-helper.c:1353
+#: transport-helper.c:1374
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "hilo %s falló al unirse: %s"
 
-#: transport-helper.c:1372 transport-helper.c:1376
+#: transport-helper.c:1393 transport-helper.c:1397
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "no se puede iniciar el hilo para copiar data: %s"
 
-#: transport-helper.c:1413
+#: transport-helper.c:1434
 #, c-format
 msgid "%s process failed to wait"
 msgstr "proceso %s falló al esperar"
 
-#: transport-helper.c:1417
+#: transport-helper.c:1438
 #, c-format
 msgid "%s process failed"
 msgstr "proceso %s falló"
 
-#: transport-helper.c:1435 transport-helper.c:1444
+#: transport-helper.c:1456 transport-helper.c:1465
 msgid "can't start thread for copying data"
 msgstr "no se puede iniciar hilo para copiar data"
 
@@ -8536,33 +8628,33 @@
 msgid "could not read bundle '%s'"
 msgstr "no se pudo leer el conjunto '%s'"
 
-#: transport.c:214
+#: transport.c:220
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport: opción inválida '%s'"
 
-#: transport.c:266
+#: transport.c:272
 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:267
+#: transport.c:273
 msgid "server options require protocol version 2 or later"
 msgstr "opciones del servidor requieren protocolo versión 2 o posterior"
 
-#: transport.c:632
+#: transport.c:631
 msgid "could not parse transport.color.* config"
 msgstr "no se pudo analizar valor de configuración transport.color.*"
 
-#: transport.c:705
+#: transport.c:704
 msgid "support for protocol v2 not implemented yet"
 msgstr "soporte para protocolo v2 no implementado todavía"
 
-#: transport.c:839
+#: transport.c:838
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "valor desconocido para configuración '%s': %s"
 
-#: transport.c:905
+#: transport.c:904
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "transporte '%s' no permitido"
@@ -8571,7 +8663,7 @@
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync ya no es soportado"
 
-#: transport.c:1052
+#: transport.c:1059
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -8580,7 +8672,7 @@
 "La siguiente ruta de submódulo contiene cambios que no\n"
 "pueden ser encontrados en ningún remoto:\n"
 
-#: transport.c:1056
+#: transport.c:1063
 #, c-format
 msgid ""
 "\n"
@@ -8607,11 +8699,11 @@
 "para hacer un push al remoto.\n"
 "\n"
 
-#: transport.c:1064
+#: transport.c:1071
 msgid "Aborting."
 msgstr "Abortando."
 
-#: transport.c:1209
+#: transport.c:1216
 msgid "failed to push all needed submodules"
 msgstr "falló al hacer push a todos los submódulos necesarios"
 
@@ -8900,7 +8992,7 @@
 msgid "Updating index flags"
 msgstr "Actualizando flags del index"
 
-#: upload-pack.c:1337
+#: upload-pack.c:1415
 msgid "expected flush after fetch arguments"
 msgstr "se espera flush tras argumentos fetch"
 
@@ -8937,50 +9029,50 @@
 msgid "Fetching objects"
 msgstr "Haciendo fetch a objetos"
 
-#: worktree.c:262 builtin/am.c:2098
+#: worktree.c:248 builtin/am.c:2098
 #, c-format
 msgid "failed to read '%s'"
 msgstr "falló al leer '%s'"
 
-#: worktree.c:309
+#: worktree.c:295
 #, 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:320
+#: worktree.c:306
 #, 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:332
+#: worktree.c:318
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' no existe"
 
-#: worktree.c:338
+#: worktree.c:324
 #, 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:347
+#: worktree.c:333
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' no apunta de vuelta a '%s'"
 
-#: wrapper.c:186 wrapper.c:356
+#: wrapper.c:194 wrapper.c:364
 #, c-format
 msgid "could not open '%s' for reading and writing"
 msgstr "no se pudo abrir '%s' para lectura y escritura"
 
-#: wrapper.c:387 wrapper.c:588
+#: wrapper.c:395 wrapper.c:596
 #, c-format
 msgid "unable to access '%s'"
 msgstr "no es posible acceder '%s'"
 
-#: wrapper.c:596
+#: wrapper.c:604
 msgid "unable to get current working directory"
 msgstr "no es posible obtener el directorio de trabajo actual"
 
@@ -9375,39 +9467,44 @@
 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:1692
+#: wt-status.c:1494
+#, 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:1733
 msgid "On branch "
 msgstr "En la rama "
 
-#: wt-status.c:1699
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "rebase interactivo en progreso; en "
 
-#: wt-status.c:1701
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "rebase en progreso; en "
 
-#: wt-status.c:1711
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Actualmente no estás en ninguna rama."
 
-#: wt-status.c:1728
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "Confirmación inicial"
 
-#: wt-status.c:1729
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "No hay commits todavía"
 
-#: wt-status.c:1743
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "Archivos sin seguimiento"
 
-#: wt-status.c:1745
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "Archivos ignorados"
 
-#: wt-status.c:1749
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9418,31 +9515,31 @@
 "puede acelerarlo, pero tienes que ser cuidadoso de no olvidar agregar\n"
 "nuevos archivos tú mismo (vea 'git help status')."
 
-#: wt-status.c:1755
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Archivos no rastreados no son mostrados %s"
 
-#: wt-status.c:1757
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (usa la opción -u para mostrar los archivos sin seguimiento)"
 
-#: wt-status.c:1763
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Sin cambios"
 
-#: wt-status.c:1768
+#: wt-status.c:1809
 #, 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:1771
+#: wt-status.c:1812
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "no se agregaron cambios al commit\n"
 
-#: wt-status.c:1774
+#: wt-status.c:1815
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9451,67 +9548,67 @@
 "no hay nada agregado al commit pero hay archivos sin seguimiento presentes "
 "(usa \"git add\" para hacerles seguimiento)\n"
 
-#: wt-status.c:1777
+#: wt-status.c:1818
 #, 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:1780
+#: wt-status.c:1821
 #, 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:1783 wt-status.c:1788
+#: wt-status.c:1824 wt-status.c:1829
 #, c-format
 msgid "nothing to commit\n"
 msgstr "nada para hacer commit\n"
 
-#: wt-status.c:1786
+#: wt-status.c:1827
 #, 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:1790
+#: wt-status.c:1831
 #, 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:1903
+#: wt-status.c:1944
 msgid "No commits yet on "
 msgstr "No hay commits todavía en "
 
-#: wt-status.c:1907
+#: wt-status.c:1948
 msgid "HEAD (no branch)"
 msgstr "HEAD (sin rama)"
 
-#: wt-status.c:1938
+#: wt-status.c:1979
 msgid "different"
 msgstr "diferente"
 
-#: wt-status.c:1940 wt-status.c:1948
+#: wt-status.c:1981 wt-status.c:1989
 msgid "behind "
 msgstr "detrás "
 
-#: wt-status.c:1943 wt-status.c:1946
+#: wt-status.c:1984 wt-status.c:1987
 msgid "ahead "
 msgstr "adelante "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2468
+#: wt-status.c:2509
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "no se puede %s: Tienes cambios sin marcar."
 
-#: wt-status.c:2474
+#: wt-status.c:2515
 msgid "additionally, your index contains uncommitted changes."
 msgstr "adicionalmente, tu índice contiene cambios que no están en un commit."
 
-#: wt-status.c:2476
+#: wt-status.c:2517
 #, 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."
@@ -9589,7 +9686,7 @@
 msgid "interactive picking"
 msgstr "selección interactiva"
 
-#: builtin/add.c:326 builtin/checkout.c:1535 builtin/reset.c:308
+#: builtin/add.c:326 builtin/checkout.c:1533 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "elegir hunks de forma interactiva"
 
@@ -9717,12 +9814,12 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "El parámetro '%s' para --chmod debe ser -x ó +x"
 
-#: builtin/add.c:501 builtin/checkout.c:1703 builtin/commit.c:351
+#: builtin/add.c:501 builtin/checkout.c:1701 builtin/commit.c:351
 #: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1506
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file es incompatible con argumentos de pathspec"
 
-#: builtin/add.c:508 builtin/checkout.c:1715 builtin/commit.c:357
+#: builtin/add.c:508 builtin/checkout.c:1713 builtin/commit.c:357
 #: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1512
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul requiere --pathspec-from-file"
@@ -9987,7 +10084,7 @@
 msgid "allow fall back on 3way merging if needed"
 msgstr "permitir retroceso en fusión de 3-vías si es necesario"
 
-#: builtin/am.c:2218 builtin/init-db.c:541 builtin/prune-packed.c:16
+#: builtin/am.c:2218 builtin/init-db.c:559 builtin/prune-packed.c:16
 #: builtin/repack.c:306 builtin/stash.c:816
 msgid "be quiet"
 msgstr "ser silencioso"
@@ -10043,7 +10140,7 @@
 
 #: builtin/am.c:2262 builtin/branch.c:659 builtin/for-each-ref.c:38
 #: builtin/replace.c:556 builtin/tag.c:438 builtin/verify-tag.c:38
-#: bugreport.c:131
+#: bugreport.c:137
 msgid "format"
 msgstr "formato"
 
@@ -10337,112 +10434,116 @@
 "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:478
+#: builtin/bisect--helper.c:460 builtin/bisect--helper.c:473
+msgid "'' is not a valid term"
+msgstr "'' no es un término válido"
+
+#: builtin/bisect--helper.c:483
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "opción desconocida: '%s'"
 
-#: builtin/bisect--helper.c:482
+#: builtin/bisect--helper.c:487
 #, 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:514
+#: builtin/bisect--helper.c:519
 msgid "bad HEAD - I need a HEAD"
 msgstr "mal HEAD - Necesito un HEAD"
 
-#: builtin/bisect--helper.c:529
+#: builtin/bisect--helper.c:534
 #, 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:550
+#: builtin/bisect--helper.c:555
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "no se bisecará en un árbol con cg-seek"
 
-#: builtin/bisect--helper.c:553
+#: builtin/bisect--helper.c:558
 msgid "bad HEAD - strange symbolic ref"
 msgstr "mal HEAD - ref simbólico extraño"
 
-#: builtin/bisect--helper.c:577
+#: builtin/bisect--helper.c:582
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "ref inválido: '%s'"
 
-#: builtin/bisect--helper.c:633
+#: builtin/bisect--helper.c:638
 msgid "perform 'git bisect next'"
 msgstr "realiza 'git bisect next'"
 
-#: builtin/bisect--helper.c:635
+#: builtin/bisect--helper.c:640
 msgid "write the terms to .git/BISECT_TERMS"
 msgstr "escribe los términos a .git/BISECT_TERMS"
 
-#: builtin/bisect--helper.c:637
+#: builtin/bisect--helper.c:642
 msgid "cleanup the bisection state"
 msgstr "limpiar el estado de bisección"
 
-#: builtin/bisect--helper.c:639
+#: builtin/bisect--helper.c:644
 msgid "check for expected revs"
 msgstr "revisar por revs esperados"
 
-#: builtin/bisect--helper.c:641
+#: builtin/bisect--helper.c:646
 msgid "reset the bisection state"
 msgstr "reiniciar el estado de bisect"
 
-#: builtin/bisect--helper.c:643
+#: builtin/bisect--helper.c:648
 msgid "write out the bisection state in BISECT_LOG"
 msgstr "escribir el estado de bisect en BISECT_LOG"
 
-#: builtin/bisect--helper.c:645
+#: builtin/bisect--helper.c:650
 msgid "check and set terms in a bisection state"
 msgstr "revisar y configurar los terms en el estado de bisect"
 
-#: builtin/bisect--helper.c:647
+#: builtin/bisect--helper.c:652
 msgid "check whether bad or good terms exist"
 msgstr "revisar si existen términos malos o buenos"
 
-#: builtin/bisect--helper.c:649
+#: builtin/bisect--helper.c:654
 msgid "print out the bisect terms"
 msgstr "imprimir los terms del bisect"
 
-#: builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:656
 msgid "start the bisect session"
 msgstr "comenzar la sesión de bisect"
 
-#: builtin/bisect--helper.c:653
+#: builtin/bisect--helper.c:658
 msgid "update BISECT_HEAD instead of checking out the current commit"
 msgstr "actualiza BISECT_HEAD en lugar de revisar el commit actual"
 
-#: builtin/bisect--helper.c:655
+#: builtin/bisect--helper.c:660
 msgid "no log for BISECT_WRITE"
 msgstr "no hay log para BISECT_WRITE"
 
-#: builtin/bisect--helper.c:673
+#: builtin/bisect--helper.c:678
 msgid "--write-terms requires two arguments"
 msgstr "--write-terms requiere dos argumentos"
 
-#: builtin/bisect--helper.c:677
+#: builtin/bisect--helper.c:682
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state no requiere argumentos"
 
-#: builtin/bisect--helper.c:684
+#: builtin/bisect--helper.c:689
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset requiere un commit o ningún argumento"
 
-#: builtin/bisect--helper.c:688
+#: builtin/bisect--helper.c:693
 msgid "--bisect-write requires either 4 or 5 arguments"
 msgstr "--bisect-write requiere entre 4 o 5 argumentos"
 
-#: builtin/bisect--helper.c:694
+#: builtin/bisect--helper.c:699
 msgid "--check-and-set-terms requires 3 arguments"
 msgstr "--bisect-clean-state no requiere argumentos"
 
-#: builtin/bisect--helper.c:700
+#: builtin/bisect--helper.c:705
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check requiere 2 o 3 argumentos"
 
-#: builtin/bisect--helper.c:706
+#: builtin/bisect--helper.c:711
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms requiere 0 o 1 argumentos"
 
@@ -11047,19 +11148,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <archivo> [<nombre-de-ref>...]"
 
-#: builtin/bundle.c:66 builtin/pack-objects.c:3376
+#: builtin/bundle.c:66 builtin/pack-objects.c:3448
 msgid "do not show progress meter"
 msgstr "no mostrar medidor de progreso"
 
-#: builtin/bundle.c:68 builtin/pack-objects.c:3378
+#: builtin/bundle.c:68 builtin/pack-objects.c:3450
 msgid "show progress meter"
 msgstr "mostrar medidor de progreso"
 
-#: builtin/bundle.c:70 builtin/pack-objects.c:3380
+#: builtin/bundle.c:70 builtin/pack-objects.c:3452
 msgid "show progress meter during object writing phase"
 msgstr "mostrar medidor de progreso durante la fase de escritura de objeto"
 
-#: builtin/bundle.c:73 builtin/pack-objects.c:3383
+#: builtin/bundle.c:73 builtin/pack-objects.c:3455
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "similar a --all-progress cuando medidor de progreso es mostrado"
 
@@ -11099,11 +11200,11 @@
 
 #: builtin/cat-file.c:599
 msgid ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 msgstr ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<formato>] | --batch-check[=<formato>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 
 #: builtin/cat-file.c:620
 msgid "only one batch option may be specified"
@@ -11137,7 +11238,7 @@
 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 git-submodule.sh:984
+#: builtin/cat-file.c:648 git-submodule.sh:958
 msgid "blob"
 msgstr "blob"
 
@@ -11198,8 +11299,8 @@
 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:1488 builtin/gc.c:537
-#: builtin/worktree.c:502
+#: builtin/check-ignore.c:21 builtin/checkout.c:1486 builtin/gc.c:537
+#: builtin/worktree.c:561
 msgid "suppress progress reporting"
 msgstr "suprimir el reporte de progreso"
 
@@ -11293,7 +11394,7 @@
 #: builtin/checkout-index.c:178 builtin/column.c:31
 #: builtin/submodule--helper.c:1400 builtin/submodule--helper.c:1403
 #: builtin/submodule--helper.c:1411 builtin/submodule--helper.c:1909
-#: builtin/worktree.c:675
+#: builtin/worktree.c:754
 msgid "string"
 msgstr "string"
 
@@ -11408,11 +11509,11 @@
 msgid "path '%s' is unmerged"
 msgstr "ruta '%s' no esta fusionada"
 
-#: builtin/checkout.c:704
+#: builtin/checkout.c:702
 msgid "you need to resolve your current index first"
 msgstr "necesitas resolver tu índice actual primero"
 
-#: builtin/checkout.c:758
+#: builtin/checkout.c:756
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11421,50 +11522,50 @@
 "no se puede continuar con los cambios en stage en los siguientes archivos:\n"
 "%s"
 
-#: builtin/checkout.c:861
+#: builtin/checkout.c:859
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "No se puede hacer reflog para '%s': %s\n"
 
-#: builtin/checkout.c:903
+#: builtin/checkout.c:901
 msgid "HEAD is now at"
 msgstr "HEAD está ahora en"
 
-#: builtin/checkout.c:907 builtin/clone.c:720
+#: builtin/checkout.c:905 builtin/clone.c:720
 msgid "unable to update HEAD"
 msgstr "no es posible actualizar  HEAD"
 
-#: builtin/checkout.c:911
+#: builtin/checkout.c:909
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Reiniciar rama '%s'\n"
 
-#: builtin/checkout.c:914
+#: builtin/checkout.c:912
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Ya en '%s'\n"
 
-#: builtin/checkout.c:918
+#: builtin/checkout.c:916
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Rama reiniciada y cambiada a '%s'\n"
 
-#: builtin/checkout.c:920 builtin/checkout.c:1344
+#: builtin/checkout.c:918 builtin/checkout.c:1342
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Cambiado a nueva rama '%s'\n"
 
-#: builtin/checkout.c:922
+#: builtin/checkout.c:920
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Cambiado a rama '%s'\n"
 
-#: builtin/checkout.c:973
+#: builtin/checkout.c:971
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... y %d más.\n"
 
-#: builtin/checkout.c:979
+#: builtin/checkout.c:977
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11487,7 +11588,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:996
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11514,19 +11615,19 @@
 " git branch <nombre-de-rama> %s\n"
 "\n"
 
-#: builtin/checkout.c:1033
+#: builtin/checkout.c:1031
 msgid "internal error in revision walk"
 msgstr "error interno en camino de revisión"
 
-#: builtin/checkout.c:1037
+#: builtin/checkout.c:1035
 msgid "Previous HEAD position was"
 msgstr "La posición previa de HEAD era"
 
-#: builtin/checkout.c:1077 builtin/checkout.c:1339
+#: builtin/checkout.c:1075 builtin/checkout.c:1337
 msgid "You are on a branch yet to be born"
 msgstr "Estás en una rama por nacer"
 
-#: builtin/checkout.c:1152
+#: builtin/checkout.c:1150
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11535,7 +11636,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:1159
+#: builtin/checkout.c:1157
 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"
@@ -11556,51 +11657,51 @@
 "de nombre <nombre> remota, como 'origin', considera configurar\n"
 "checkout.defaultRemote=origin en tu configuración."
 
-#: builtin/checkout.c:1169
+#: builtin/checkout.c:1167
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' concordó con multiples (%d) ramas de rastreo remoto"
 
-#: builtin/checkout.c:1235
+#: builtin/checkout.c:1233
 msgid "only one reference expected"
 msgstr "solo una referencia esperada"
 
-#: builtin/checkout.c:1252
+#: builtin/checkout.c:1250
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "solo una referencia esperada, %d entregadas."
 
-#: builtin/checkout.c:1298 builtin/worktree.c:283 builtin/worktree.c:451
+#: builtin/checkout.c:1296 builtin/worktree.c:342 builtin/worktree.c:510
 #, c-format
 msgid "invalid reference: %s"
 msgstr "referencia inválida: %s"
 
-#: builtin/checkout.c:1311 builtin/checkout.c:1677
+#: builtin/checkout.c:1309 builtin/checkout.c:1675
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "la referencia no es n árbol: %s"
 
-#: builtin/checkout.c:1358
+#: builtin/checkout.c:1356
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "se esperaba un branch, se obtuvo tag '%s'"
 
-#: builtin/checkout.c:1360
+#: builtin/checkout.c:1358
 #, 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:1361 builtin/checkout.c:1369
+#: builtin/checkout.c:1359 builtin/checkout.c:1367
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "se esperaba branch, se obuto '%s'"
 
-#: builtin/checkout.c:1364
+#: builtin/checkout.c:1362
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "se espera una rama, se obtuvo commit '%s'"
 
-#: builtin/checkout.c:1380
+#: builtin/checkout.c:1378
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11608,7 +11709,7 @@
 "no se puede cambiar de branch durante un merge\n"
 "Considera \"git merge --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1384
+#: builtin/checkout.c:1382
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11616,7 +11717,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:1388
+#: builtin/checkout.c:1386
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11624,7 +11725,7 @@
 "no se puede cambiar de branch durante un rebase\n"
 "Considera \"git rebase --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1390
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11632,7 +11733,7 @@
 "no se puede cambiar de branch durante un cherry-pick\n"
 "Considera \"git cherry-pick --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1394
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11640,144 +11741,144 @@
 "no se puede cambiar de branch durante un revert\n"
 "Considera \"git revert --quit\" o \"git worktree add\"."
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1398
 msgid "you are switching branch while bisecting"
 msgstr "estás cambiando ramas durante un bisect"
 
-#: builtin/checkout.c:1407
+#: builtin/checkout.c:1405
 msgid "paths cannot be used with switching branches"
 msgstr "rutas no pueden ser usadas con cambios de rama"
 
-#: builtin/checkout.c:1410 builtin/checkout.c:1414 builtin/checkout.c:1418
+#: builtin/checkout.c:1408 builtin/checkout.c:1412 builtin/checkout.c:1416
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' no puede ser usado con cambios de ramas"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1425 builtin/checkout.c:1428
-#: builtin/checkout.c:1433 builtin/checkout.c:1438
+#: builtin/checkout.c:1420 builtin/checkout.c:1423 builtin/checkout.c:1426
+#: builtin/checkout.c:1431 builtin/checkout.c:1436
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' no puede ser usado con '%s'"
 
-#: builtin/checkout.c:1435
+#: builtin/checkout.c:1433
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' no puede tomar <punto de partida>"
 
-#: builtin/checkout.c:1443
+#: builtin/checkout.c:1441
 #, 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:1450
+#: builtin/checkout.c:1448
 msgid "missing branch or commit argument"
 msgstr "falta branch o commit como argumento"
 
-#: builtin/checkout.c:1492 builtin/clone.c:91 builtin/commit-graph.c:80
-#: builtin/commit-graph.c:164 builtin/fetch.c:168 builtin/merge.c:288
+#: builtin/checkout.c:1490 builtin/clone.c:91 builtin/commit-graph.c:82
+#: builtin/commit-graph.c:189 builtin/fetch.c:168 builtin/merge.c:288
 #: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:561
 #: builtin/send-pack.c:173
 msgid "force progress reporting"
 msgstr "forzar el reporte de progreso"
 
-#: builtin/checkout.c:1493
+#: builtin/checkout.c:1491
 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:1494 builtin/log.c:1709 parse-options.h:322
+#: builtin/checkout.c:1492 builtin/log.c:1709 parse-options.h:322
 msgid "style"
 msgstr "estilo"
 
-#: builtin/checkout.c:1495
+#: builtin/checkout.c:1493
 msgid "conflict style (merge or diff3)"
 msgstr "conflicto de estilos (merge o diff3)"
 
-#: builtin/checkout.c:1507 builtin/worktree.c:499
+#: builtin/checkout.c:1505 builtin/worktree.c:558
 msgid "detach HEAD at named commit"
 msgstr "desacoplar HEAD en el commit nombrado"
 
-#: builtin/checkout.c:1508
+#: builtin/checkout.c:1506
 msgid "set upstream info for new branch"
 msgstr "configurar info de upstream para una rama nueva"
 
-#: builtin/checkout.c:1510
+#: builtin/checkout.c:1508
 msgid "force checkout (throw away local modifications)"
 msgstr "forzar el checkout (descartar modificaciones locales)"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new-branch"
 msgstr "nueva-rama"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new unparented branch"
 msgstr "nueva rama no emparentada"
 
-#: builtin/checkout.c:1514 builtin/merge.c:292
+#: builtin/checkout.c:1512 builtin/merge.c:292
 msgid "update ignored files (default)"
 msgstr "actualizar archivos ignorados (default)"
 
-#: builtin/checkout.c:1517
+#: builtin/checkout.c:1515
 msgid "do not check if another worktree is holding the given ref"
 msgstr "no revise si otro árbol de trabajo contiene la ref entregada"
 
-#: builtin/checkout.c:1530
+#: builtin/checkout.c:1528
 msgid "checkout our version for unmerged files"
 msgstr "hacer checkout a  nuestra versión para archivos sin fusionar"
 
-#: builtin/checkout.c:1533
+#: builtin/checkout.c:1531
 msgid "checkout their version for unmerged files"
 msgstr "hacer checkout a su versión para los archivos sin fusionar"
 
-#: builtin/checkout.c:1537
+#: builtin/checkout.c:1535
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "no limitar pathspecs a dispersar entradas solamente"
 
-#: builtin/checkout.c:1592
+#: builtin/checkout.c:1590
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c y --orphan son mutuamente exclusivas"
 
-#: builtin/checkout.c:1596
+#: builtin/checkout.c:1594
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p y --overlay son mutuamente exclusivas"
 
-#: builtin/checkout.c:1633
+#: builtin/checkout.c:1631
 msgid "--track needs a branch name"
 msgstr "--track necesita el nombre de una rama"
 
-#: builtin/checkout.c:1638
+#: builtin/checkout.c:1636
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "falta nombre de rama; prueba -%c"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "could not resolve %s"
 msgstr "no se pudo resolver %s"
 
-#: builtin/checkout.c:1686
+#: builtin/checkout.c:1684
 msgid "invalid path specification"
 msgstr "especificación de ruta inválida"
 
-#: builtin/checkout.c:1693
+#: builtin/checkout.c:1691
 #, 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:1697
+#: builtin/checkout.c:1695
 #, 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:1706
+#: builtin/checkout.c:1704
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file es incompatible con --detach"
 
-#: builtin/checkout.c:1709 builtin/reset.c:325 builtin/stash.c:1503
+#: builtin/checkout.c:1707 builtin/reset.c:325 builtin/stash.c:1503
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file es incompatible con --patch"
 
-#: builtin/checkout.c:1720
+#: builtin/checkout.c:1718
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -11785,69 +11886,70 @@
 "git checkout: --ours/--theirs, --force y --merge son incompatibles cuando\n"
 "se revisa fuera del índice."
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 msgid "you must specify path(s) to restore"
 msgstr "debes especificar path(s) para restaurar"
 
-#: builtin/checkout.c:1751 builtin/checkout.c:1753 builtin/checkout.c:1802
-#: builtin/checkout.c:1804 builtin/clone.c:121 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/worktree.c:495 builtin/worktree.c:497
+#: builtin/checkout.c:1749 builtin/checkout.c:1751 builtin/checkout.c:1800
+#: builtin/checkout.c:1802 builtin/clone.c:121 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2295 builtin/worktree.c:554
+#: builtin/worktree.c:556
 msgid "branch"
 msgstr "rama"
 
-#: builtin/checkout.c:1752
+#: builtin/checkout.c:1750
 msgid "create and checkout a new branch"
 msgstr "crear y hacer checkout a una nueva rama"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid "create/reset and checkout a branch"
 msgstr "crear/reiniciar y hacer checkout a una rama"
 
-#: builtin/checkout.c:1755
+#: builtin/checkout.c:1753
 msgid "create reflog for new branch"
 msgstr "crear un reflog para una nueva rama"
 
-#: builtin/checkout.c:1757
+#: builtin/checkout.c:1755
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "adivinar segunda opción 'git checkout <no-hay-tal-rama>' (default)"
 
-#: builtin/checkout.c:1758
+#: builtin/checkout.c:1756
 msgid "use overlay mode (default)"
 msgstr "usar modo overlay (default)"
 
-#: builtin/checkout.c:1803
+#: builtin/checkout.c:1801
 msgid "create and switch to a new branch"
 msgstr "crear y hacer switch a una nueva rama"
 
-#: builtin/checkout.c:1805
+#: builtin/checkout.c:1803
 msgid "create/reset and switch to a branch"
 msgstr "crear/reiniciar y hacer switch a una rama"
 
-#: builtin/checkout.c:1807
+#: builtin/checkout.c:1805
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "adivinar segunda opción 'git checkout <no-hay-tal-rama>'"
 
-#: builtin/checkout.c:1809
+#: builtin/checkout.c:1807
 msgid "throw away local modifications"
 msgstr "descartar modificaciones locales"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "which tree-ish to checkout from"
 msgstr "de qué árbol hacer el checkout"
 
-#: builtin/checkout.c:1845
+#: builtin/checkout.c:1843
 msgid "restore the index"
 msgstr "restaurar el index"
 
-#: builtin/checkout.c:1847
+#: builtin/checkout.c:1845
 msgid "restore the working tree (default)"
 msgstr "restaurar el árbol de trabajo (default)"
 
-#: builtin/checkout.c:1849
+#: builtin/checkout.c:1847
 msgid "ignore unmerged entries"
 msgstr "ignorar entradas no fusionadas"
 
-#: builtin/checkout.c:1850
+#: builtin/checkout.c:1848
 msgid "use overlay mode"
 msgstr "usar modo overlay"
 
@@ -12010,11 +12112,7 @@
 msgid "remove only ignored files"
 msgstr "borrar solo archivos ignorados"
 
-#: builtin/clean.c:931
-msgid "-x and -X cannot be used together"
-msgstr "-x y -X no pueden ser usadas juntas"
-
-#: builtin/clean.c:935
+#: builtin/clean.c:929
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -12022,7 +12120,7 @@
 "clean.requireForce configurado como true y ninguno -i, -n, ni -f entregados; "
 "rehusando el clean"
 
-#: builtin/clean.c:938
+#: builtin/clean.c:932
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -12030,6 +12128,10 @@
 "clean.requireForce default en true y ninguno -i, -n, ni -f entregados; "
 "rehusando el clean"
 
+#: builtin/clean.c:944
+msgid "-x and -X cannot be used together"
+msgstr "-x y -X no pueden ser usadas juntas"
+
 #: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<opciones>] [--] <repo> [<directorio>]"
@@ -12038,7 +12140,7 @@
 msgid "don't create a checkout"
 msgstr "no crear checkout"
 
-#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:536
+#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:554
 msgid "create a bare repository"
 msgstr "crear un repositorio vacío"
 
@@ -12070,11 +12172,11 @@
 msgid "number of submodules cloned in parallel"
 msgstr "numero de submódulos clonados en paralelo"
 
-#: builtin/clone.c:111 builtin/init-db.c:533
+#: builtin/clone.c:111 builtin/init-db.c:551
 msgid "template-directory"
 msgstr "directorio-template"
 
-#: builtin/clone.c:112 builtin/init-db.c:534
+#: builtin/clone.c:112 builtin/init-db.c:552
 msgid "directory from which templates will be used"
 msgstr "directorio del cual los templates serán usados"
 
@@ -12088,8 +12190,8 @@
 msgid "use --reference only while cloning"
 msgstr "usa--reference  solamente si estás clonado"
 
-#: builtin/clone.c:119 builtin/column.c:27 builtin/merge-file.c:46
-#: builtin/pack-objects.c:3442 builtin/repack.c:329
+#: builtin/clone.c:119 builtin/column.c:27 builtin/init-db.c:562
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3514 builtin/repack.c:329
 msgid "name"
 msgstr "nombre"
 
@@ -12114,7 +12216,7 @@
 msgid "create a shallow clone of that depth"
 msgstr "crear un clon superficial para esa profundidad"
 
-#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3431
+#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3503
 #: builtin/pull.c:211
 msgid "time"
 msgstr "tiempo"
@@ -12145,11 +12247,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "cualquier submódulo clonado será superficial"
 
-#: builtin/clone.c:137 builtin/init-db.c:542
+#: builtin/clone.c:137 builtin/init-db.c:560
 msgid "gitdir"
 msgstr "gitdir"
 
-#: builtin/clone.c:138 builtin/init-db.c:543
+#: builtin/clone.c:138 builtin/init-db.c:561
 msgid "separate git dir from working tree"
 msgstr "separa git dir del árbol de trabajo"
 
@@ -12278,7 +12380,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "no se puede desvincular archivos alternos temporales"
 
-#: builtin/clone.c:971 builtin/receive-pack.c:1972
+#: builtin/clone.c:971 builtin/receive-pack.c:1982
 msgid "Too many arguments."
 msgstr "Muchos argumentos."
 
@@ -12295,48 +12397,48 @@
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare y --separate-git-dir son incompatibles."
 
-#: builtin/clone.c:1004
+#: builtin/clone.c:1007
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "repositorio '%s' no existe"
 
-#: builtin/clone.c:1010 builtin/fetch.c:1789
+#: builtin/clone.c:1011 builtin/fetch.c:1794
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "profundidad %s no es un numero positivo"
 
-#: builtin/clone.c:1020
+#: builtin/clone.c:1021
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "la ruta de destino '%s' ya existe y no es un directorio vacío."
 
-#: builtin/clone.c:1030
+#: builtin/clone.c:1033
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "directorio de trabajo '%s' ya existe."
 
-#: builtin/clone.c:1045 builtin/clone.c:1066 builtin/difftool.c:271
-#: builtin/log.c:1886 builtin/worktree.c:295 builtin/worktree.c:327
+#: builtin/clone.c:1048 builtin/clone.c:1069 builtin/difftool.c:271
+#: builtin/log.c:1886 builtin/worktree.c:354 builtin/worktree.c:386
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "no se pudo crear directorios principales de '%s'"
 
-#: builtin/clone.c:1050
+#: builtin/clone.c:1053
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "no se pudo crear un árbol de trabajo '%s'"
 
-#: builtin/clone.c:1070
+#: builtin/clone.c:1073
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Clonando en un repositorio vacío '%s'...\n"
 
-#: builtin/clone.c:1072
+#: builtin/clone.c:1075
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Clonando en '%s'...\n"
 
-#: builtin/clone.c:1096
+#: builtin/clone.c:1099
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -12344,36 +12446,36 @@
 "clone --recursive no es compatible con --reference y --reference-if-able al "
 "mismo tiempo"
 
-#: builtin/clone.c:1160
+#: builtin/clone.c:1164
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth es ignorada en clonaciones locales; usa file:// más bien."
 
-#: builtin/clone.c:1162
+#: builtin/clone.c:1166
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "--shallow-since es ignorado en el clon local; use file:// ."
 
-#: builtin/clone.c:1164
+#: builtin/clone.c:1168
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr "--shallow-exclude es ignorado en clones locales; use file://."
 
-#: builtin/clone.c:1166
+#: builtin/clone.c:1170
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--filter es ignorado en clones locales; usa file:// en su lugar."
 
-#: builtin/clone.c:1169
+#: builtin/clone.c:1173
 msgid "source repository is shallow, ignoring --local"
 msgstr "repositorio fuente es superficial, ignorando --local"
 
-#: builtin/clone.c:1174
+#: builtin/clone.c:1178
 msgid "--local is ignored"
 msgstr "--local es ignorado"
 
-#: builtin/clone.c:1249 builtin/clone.c:1257
+#: builtin/clone.c:1262 builtin/clone.c:1270
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Rama remota %s no encontrada en upstream %s"
 
-#: builtin/clone.c:1260
+#: builtin/clone.c:1273
 msgid "You appear to have cloned an empty repository."
 msgstr "Pareces haber clonado un repositorio sin contenido."
 
@@ -12409,13 +12511,13 @@
 msgid "--command must be the first argument"
 msgstr "--command debe ser el primer argumento"
 
-#: builtin/commit-graph.c:11 builtin/commit-graph.c:19
+#: builtin/commit-graph.c:13 builtin/commit-graph.c:21
 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:12 builtin/commit-graph.c:24
+#: builtin/commit-graph.c:14 builtin/commit-graph.c:26
 msgid ""
 "git commit-graph write [--object-dir <objdir>] [--append] [--"
 "split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
@@ -12425,80 +12527,89 @@
 "split[=<estrategia>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
 "paths] [--[no-]progress] <opciones de split>"
 
-#: builtin/commit-graph.c:60
+#: builtin/commit-graph.c:62
 #, c-format
 msgid "could not find object directory matching %s"
 msgstr "no se pudo entoncrar el objeto directorio concordante con %s"
 
-#: builtin/commit-graph.c:76 builtin/commit-graph.c:152
-#: builtin/commit-graph.c:257 builtin/fetch.c:180 builtin/log.c:1678
+#: builtin/commit-graph.c:78 builtin/commit-graph.c:177
+#: builtin/commit-graph.c:276 builtin/fetch.c:180 builtin/log.c:1678
 msgid "dir"
 msgstr "dir"
 
-#: builtin/commit-graph.c:77 builtin/commit-graph.c:153
-#: builtin/commit-graph.c:258
+#: builtin/commit-graph.c:79 builtin/commit-graph.c:178
+#: builtin/commit-graph.c:277
 msgid "The object directory to store the graph"
 msgstr "El directorio de objetos para guardar el gráfico"
 
-#: builtin/commit-graph.c:79
+#: builtin/commit-graph.c:81
 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"
 
-#: builtin/commit-graph.c:102
+#: builtin/commit-graph.c:104
 #, c-format
 msgid "Could not open commit-graph '%s'"
 msgstr "No se pudo abrir commit-graph '%s'"
 
-#: builtin/commit-graph.c:136
+#: builtin/commit-graph.c:138
 #, c-format
 msgid "unrecognized --split argument, %s"
 msgstr "argumento --split no reconocido, %s"
 
-#: builtin/commit-graph.c:155
-msgid "start walk at all refs"
-msgstr "comenzar caminata en todas las refs"
-
-#: builtin/commit-graph.c:157
-msgid "scan pack-indexes listed by stdin for commits"
-msgstr "escanear paquete de índices por stdin por commits"
-
-#: builtin/commit-graph.c:159
-msgid "start walk at commits listed by stdin"
-msgstr "comenzar a caminar a los commits listados por stdin"
-
-#: builtin/commit-graph.c:161
-msgid "include all commits already in the commit-graph file"
-msgstr "inclye todos los commits que ya están en el archivo commit-graph"
-
-#: builtin/commit-graph.c:163
-msgid "enable computation for changed paths"
-msgstr "habilitar computación para rutas cambiadas"
-
-#: builtin/commit-graph.c:166
-msgid "allow writing an incremental commit-graph file"
-msgstr "permitir escribir un archivo commit-graph incremental"
-
-#: builtin/commit-graph.c:170
-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"
-
-#: builtin/commit-graph.c:172
-msgid "maximum ratio between two levels of a split commit-graph"
-msgstr "radio máximo entre dos niveles de corte de commit-graph"
-
-#: builtin/commit-graph.c:174
-msgid "only expire files older than a given date-time"
-msgstr "expirar objetos más viejos a una fecha dada"
-
-#: builtin/commit-graph.c:190
-msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
-msgstr "use como máximo uno de --reachable, --stdin-commits, o --stdin-packs"
-
-#: builtin/commit-graph.c:229
+#: builtin/commit-graph.c:151
 #, c-format
 msgid "unexpected non-hex object ID: %s"
 msgstr "ID de objeto no hex inesperado :%s"
 
+#: builtin/commit-graph.c:156
+#, c-format
+msgid "invalid object: %s"
+msgstr "no es un objeto válido: %s"
+
+#: builtin/commit-graph.c:180
+msgid "start walk at all refs"
+msgstr "comenzar caminata en todas las refs"
+
+#: builtin/commit-graph.c:182
+msgid "scan pack-indexes listed by stdin for commits"
+msgstr "escanear paquete de índices por stdin por commits"
+
+#: builtin/commit-graph.c:184
+msgid "start walk at commits listed by stdin"
+msgstr "comenzar a caminar a los commits listados por stdin"
+
+#: builtin/commit-graph.c:186
+msgid "include all commits already in the commit-graph file"
+msgstr "inclye todos los commits que ya están en el archivo commit-graph"
+
+#: builtin/commit-graph.c:188
+msgid "enable computation for changed paths"
+msgstr "habilitar computación para rutas cambiadas"
+
+#: builtin/commit-graph.c:191
+msgid "allow writing an incremental commit-graph file"
+msgstr "permitir escribir un archivo commit-graph incremental"
+
+#: builtin/commit-graph.c:195
+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"
+
+#: builtin/commit-graph.c:197
+msgid "maximum ratio between two levels of a split commit-graph"
+msgstr "radio máximo entre dos niveles de corte de commit-graph"
+
+#: builtin/commit-graph.c:199
+msgid "only expire files older than a given date-time"
+msgstr "expirar objetos más viejos a una fecha dada"
+
+#: builtin/commit-graph.c:215
+msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
+msgstr "use como máximo uno de --reachable, --stdin-commits, o --stdin-packs"
+
+#: builtin/commit-graph.c:245
+msgid "Collecting commits from input"
+msgstr "Recolectando commits del input"
+
 #: builtin/commit-tree.c:18
 msgid ""
 "git commit-tree [(-p <parent>)...] [-S[<keyid>]] [(-m <message>)...] [(-F "
@@ -12903,7 +13014,7 @@
 msgstr "version"
 
 #: builtin/commit.c:1376 builtin/commit.c:1535 builtin/push.c:549
-#: builtin/worktree.c:646
+#: builtin/worktree.c:722
 msgid "machine-readable output"
 msgstr "output formato-maquina"
 
@@ -12916,8 +13027,8 @@
 msgstr "terminar entradas con NUL"
 
 #: builtin/commit.c:1384 builtin/commit.c:1388 builtin/commit.c:1543
-#: builtin/fast-export.c:1153 builtin/fast-export.c:1156
-#: builtin/fast-export.c:1159 builtin/rebase.c:1392 parse-options.h:336
+#: builtin/fast-export.c:1199 builtin/fast-export.c:1202
+#: builtin/fast-export.c:1205 builtin/rebase.c:1392 parse-options.h:336
 msgid "mode"
 msgstr "modo"
 
@@ -13606,35 +13717,45 @@
 msgid "--broken is incompatible with commit-ishes"
 msgstr "--broken es incompatible con commit-ismos"
 
-#: builtin/diff.c:84
+#: builtin/diff.c:91
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s': no es un archivo regular o un enlace simbólico"
 
-#: builtin/diff.c:235
+#: builtin/diff.c:242
 #, c-format
 msgid "invalid option: %s"
 msgstr "opción inválida: %s"
 
-#: builtin/diff.c:350
+#: builtin/diff.c:359
+#, c-format
+msgid "%s...%s: no merge base"
+msgstr "%s...%s: se neceista una base de fusión"
+
+#: builtin/diff.c:469
 msgid "Not a git repository"
 msgstr "No es un repositorio git"
 
-#: builtin/diff.c:394
+#: builtin/diff.c:514
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "objeto '%s' entregado no es válido."
 
-#: builtin/diff.c:403
+#: builtin/diff.c:525
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "más de dos blobs entregados: '%s'"
 
-#: builtin/diff.c:408
+#: builtin/diff.c:530
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "objeto no manejado '%s' entregado."
 
+#: builtin/diff.c:564
+#, c-format
+msgid "%s...%s: multiple merge bases, using %s"
+msgstr "%s...%s: múltiples bases de fusión, usando %s"
+
 #: builtin/difftool.c:30
 msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
 msgstr "git difftool [<opciones>] [<commit> [<commit>]] [--] [<ruta>...]"
@@ -13783,85 +13904,106 @@
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-opts]"
 
-#: builtin/fast-export.c:853
+#: builtin/fast-export.c:868
 msgid "Error: Cannot export nested tags unless --mark-tags is specified."
 msgstr ""
 "Error: No se puede exportar los tags anidados a menos que --mark-tags sea "
 "especificado."
 
-#: builtin/fast-export.c:1152
+#: builtin/fast-export.c:1178
+msgid "--anonymize-map token cannot be empty"
+msgstr "token --anonymize-map no puede estar vacío"
+
+#: builtin/fast-export.c:1198
 msgid "show progress after <n> objects"
 msgstr "mostrar progreso después de <n> objetos"
 
-#: builtin/fast-export.c:1154
+#: builtin/fast-export.c:1200
 msgid "select handling of signed tags"
 msgstr "seleccionar el manejo de tags firmados"
 
-#: builtin/fast-export.c:1157
+#: builtin/fast-export.c:1203
 msgid "select handling of tags that tag filtered objects"
 msgstr "seleccionar el manejo de tags que son tags de objetos filtrados"
 
-#: builtin/fast-export.c:1160
+#: builtin/fast-export.c:1206
 msgid "select handling of commit messages in an alternate encoding"
 msgstr "seleccionar el manejo de mensajes de commit en un encoding diferente"
 
-#: builtin/fast-export.c:1163
+#: builtin/fast-export.c:1209
 msgid "Dump marks to this file"
 msgstr "Volcar marcas a este archivo"
 
-#: builtin/fast-export.c:1165
+#: builtin/fast-export.c:1211
 msgid "Import marks from this file"
 msgstr "Importar marcas de este archivo"
 
-#: builtin/fast-export.c:1169
+#: builtin/fast-export.c:1215
 msgid "Import marks from this file if it exists"
 msgstr "Importar marcas de este archivo si existe"
 
-#: builtin/fast-export.c:1171
+#: builtin/fast-export.c:1217
 msgid "Fake a tagger when tags lack one"
 msgstr "Falsificar un tagger cuando les falta uno"
 
-#: builtin/fast-export.c:1173
+#: builtin/fast-export.c:1219
 msgid "Output full tree for each commit"
 msgstr "Mostrar todo el árbol para cada commit"
 
-#: builtin/fast-export.c:1175
+#: builtin/fast-export.c:1221
 msgid "Use the done feature to terminate the stream"
 msgstr "Use el feature done para terminar el stream"
 
-#: builtin/fast-export.c:1176
+#: builtin/fast-export.c:1222
 msgid "Skip output of blob data"
 msgstr "Saltar el output de data blob"
 
-#: builtin/fast-export.c:1177 builtin/log.c:1724
+#: builtin/fast-export.c:1223 builtin/log.c:1724
 msgid "refspec"
 msgstr "refspec"
 
-#: builtin/fast-export.c:1178
+#: builtin/fast-export.c:1224
 msgid "Apply refspec to exported refs"
 msgstr "Aplicar refspec para los refs exportados"
 
-#: builtin/fast-export.c:1179
+#: builtin/fast-export.c:1225
 msgid "anonymize output"
 msgstr "anonimizar la salida"
 
-#: builtin/fast-export.c:1181
+#: builtin/fast-export.c:1226
+msgid "from:to"
+msgstr "de:para"
+
+#: builtin/fast-export.c:1227
+msgid "convert <from> to <to> in anonymized output"
+msgstr "convertir <de> a <para> en output anonimizado"
+
+#: builtin/fast-export.c:1230
 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"
 
-#: builtin/fast-export.c:1183
+#: builtin/fast-export.c:1232
 msgid "Show original object ids of blobs/commits"
 msgstr "Mostrar ids de objetos originales para blobs/commits"
 
-#: builtin/fast-export.c:1185
+#: builtin/fast-export.c:1234
 msgid "Label tags with mark ids"
 msgstr "Marcar tags con ids de mark"
 
-#: builtin/fast-export.c:1220
+#: builtin/fast-export.c:1257
+msgid "--anonymize-map without --anonymize does not make sense"
+msgstr "--anonymize-map sin --anonymize no tiene sentido"
+
+#: builtin/fast-export.c:1272
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
 msgstr "No se puede pasar ambos --import-marks y --import-marks-if-exists"
 
+#: builtin/fetch-pack.c:245
+#, c-format
+msgid "Lockfile created but not reported: %s"
+msgstr "Lockfile creado pero no reportado: %s"
+
 #: builtin/fetch.c:35
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<opciones>] [<repositorio> [<refspec>...]]"
@@ -14188,40 +14330,40 @@
 msgid "You need to specify a tag name."
 msgstr "Tienes que especificar un nombre de tag."
 
-#: builtin/fetch.c:1773
+#: builtin/fetch.c:1778
 msgid "Negative depth in --deepen is not supported"
 msgstr "Profundidad negativa en --deepen no soportada"
 
-#: builtin/fetch.c:1775
+#: builtin/fetch.c:1780
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen y --depth son mutuamente exclusivas"
 
-#: builtin/fetch.c:1780
+#: builtin/fetch.c:1785
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth y --unshallow no pueden ser usadas juntas"
 
-#: builtin/fetch.c:1782
+#: builtin/fetch.c:1787
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow no tiene sentido en un repositorio completo"
 
-#: builtin/fetch.c:1798
+#: builtin/fetch.c:1800
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all no toma un argumento de repositorio"
 
-#: builtin/fetch.c:1800
+#: builtin/fetch.c:1802
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all no tiene sentido con refspecs"
 
-#: builtin/fetch.c:1809
+#: builtin/fetch.c:1811
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "No existe el remoto o grupo remoto: %s"
 
-#: builtin/fetch.c:1816
+#: builtin/fetch.c:1818
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Extraer un grupo y especificar un refspecs no tiene sentido"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1836
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14315,32 +14457,32 @@
 msgid "print only refs which don't contain the commit"
 msgstr "mostrar solo refs que no contienen el commit"
 
-#: builtin/fsck.c:68 builtin/fsck.c:147 builtin/fsck.c:148
+#: builtin/fsck.c:69 builtin/fsck.c:148 builtin/fsck.c:149
 msgid "unknown"
 msgstr "desconocido"
 
 #. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
-#: builtin/fsck.c:100 builtin/fsck.c:120
+#: builtin/fsck.c:101 builtin/fsck.c:121
 #, c-format
 msgid "error in %s %s: %s"
 msgstr "error en %s %s: %s"
 
 #. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
-#: builtin/fsck.c:114
+#: builtin/fsck.c:115
 #, c-format
 msgid "warning in %s %s: %s"
 msgstr "peligro en %s %s: %s"
 
-#: builtin/fsck.c:143 builtin/fsck.c:146
+#: builtin/fsck.c:144 builtin/fsck.c:147
 #, c-format
 msgid "broken link from %7s %s"
 msgstr "link roto de %7s %s"
 
-#: builtin/fsck.c:155
+#: builtin/fsck.c:156
 msgid "wrong object type in link"
 msgstr "tipo de objeto equivocado en link"
 
-#: builtin/fsck.c:171
+#: builtin/fsck.c:172
 #, c-format
 msgid ""
 "broken link from %7s %s\n"
@@ -14349,211 +14491,211 @@
 "link roto de %7s %s\n"
 "              a %7s %s"
 
-#: builtin/fsck.c:282
+#: builtin/fsck.c:283
 #, c-format
 msgid "missing %s %s"
 msgstr "faltan %s %s"
 
-#: builtin/fsck.c:309
+#: builtin/fsck.c:310
 #, c-format
 msgid "unreachable %s %s"
 msgstr "inalcanzable %s %s"
 
-#: builtin/fsck.c:329
+#: builtin/fsck.c:330
 #, c-format
 msgid "dangling %s %s"
 msgstr "actualizando %s %s"
 
-#: builtin/fsck.c:339
+#: builtin/fsck.c:340
 msgid "could not create lost-found"
 msgstr "no se pudo crear lost-found"
 
-#: builtin/fsck.c:350
+#: builtin/fsck.c:351
 #, c-format
 msgid "could not finish '%s'"
 msgstr "no se pudo finalizar '%s'"
 
-#: builtin/fsck.c:367
+#: builtin/fsck.c:368
 #, c-format
 msgid "Checking %s"
 msgstr "Revisando %s"
 
-#: builtin/fsck.c:405
+#: builtin/fsck.c:406
 #, c-format
 msgid "Checking connectivity (%d objects)"
 msgstr "Verificando conectividad (%d objetos)"
 
-#: builtin/fsck.c:424
+#: builtin/fsck.c:425
 #, c-format
 msgid "Checking %s %s"
 msgstr "Revisando %s %s"
 
-#: builtin/fsck.c:429
+#: builtin/fsck.c:430
 msgid "broken links"
 msgstr "links rotos"
 
-#: builtin/fsck.c:438
+#: builtin/fsck.c:439
 #, c-format
 msgid "root %s"
 msgstr "raíz %s"
 
-#: builtin/fsck.c:446
+#: builtin/fsck.c:447
 #, c-format
 msgid "tagged %s %s (%s) in %s"
 msgstr "tag %s %s (%s) en %s"
 
-#: builtin/fsck.c:475
+#: builtin/fsck.c:476
 #, c-format
 msgid "%s: object corrupt or missing"
 msgstr "%s: objecto corrupto o faltante"
 
-#: builtin/fsck.c:500
+#: builtin/fsck.c:501
 #, c-format
 msgid "%s: invalid reflog entry %s"
 msgstr "%s: referencia inválida %s"
 
-#: builtin/fsck.c:514
+#: builtin/fsck.c:515
 #, c-format
 msgid "Checking reflog %s->%s"
 msgstr "Revisando reflog %s->%s"
 
-#: builtin/fsck.c:548
+#: builtin/fsck.c:549
 #, c-format
 msgid "%s: invalid sha1 pointer %s"
 msgstr "%s: puntero sha1 inválido %s"
 
-#: builtin/fsck.c:555
+#: builtin/fsck.c:556
 #, c-format
 msgid "%s: not a commit"
 msgstr "%s: no es un commit"
 
-#: builtin/fsck.c:609
+#: builtin/fsck.c:610
 msgid "notice: No default references"
 msgstr "aviso: No hay referencias por defecto"
 
-#: builtin/fsck.c:624
+#: builtin/fsck.c:625
 #, c-format
 msgid "%s: object corrupt or missing: %s"
 msgstr "%s: objeto corrupto o no encontrado: %s"
 
-#: builtin/fsck.c:637
+#: builtin/fsck.c:638
 #, c-format
 msgid "%s: object could not be parsed: %s"
 msgstr "%s: no se puede analizar objeto: %s"
 
-#: builtin/fsck.c:657
+#: builtin/fsck.c:658
 #, c-format
 msgid "bad sha1 file: %s"
 msgstr "mal sha1 de archivo: %s"
 
-#: builtin/fsck.c:672
+#: builtin/fsck.c:673
 msgid "Checking object directory"
 msgstr "Revisando directorio de objetos"
 
-#: builtin/fsck.c:675
+#: builtin/fsck.c:676
 msgid "Checking object directories"
 msgstr "Revisando objetos directorios"
 
-#: builtin/fsck.c:690
+#: builtin/fsck.c:691
 #, c-format
 msgid "Checking %s link"
 msgstr "Revisando link %s"
 
-#: builtin/fsck.c:695 builtin/index-pack.c:843
+#: builtin/fsck.c:696 builtin/index-pack.c:843
 #, c-format
 msgid "invalid %s"
 msgstr "%s inválido"
 
-#: builtin/fsck.c:702
+#: builtin/fsck.c:703
 #, c-format
 msgid "%s points to something strange (%s)"
 msgstr "%s apunta a algo extraño (%s)"
 
-#: builtin/fsck.c:708
+#: builtin/fsck.c:709
 #, c-format
 msgid "%s: detached HEAD points at nothing"
 msgstr "%s: HEAD desacoplado apunta a nada"
 
-#: builtin/fsck.c:712
+#: builtin/fsck.c:713
 #, c-format
 msgid "notice: %s points to an unborn branch (%s)"
 msgstr "aviso: %s apunta a un branch no nacido (%s)"
 
-#: builtin/fsck.c:724
+#: builtin/fsck.c:725
 msgid "Checking cache tree"
 msgstr "Revisando el cache tree"
 
-#: builtin/fsck.c:729
+#: builtin/fsck.c:730
 #, c-format
 msgid "%s: invalid sha1 pointer in cache-tree"
 msgstr "%s: puntero inválido sha1 en cache-tree"
 
-#: builtin/fsck.c:738
+#: builtin/fsck.c:739
 msgid "non-tree in cache-tree"
 msgstr "non-tree en cache-tree"
 
-#: builtin/fsck.c:769
+#: builtin/fsck.c:770
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<opciones>] [<objeto>...]"
 
-#: builtin/fsck.c:775
+#: builtin/fsck.c:776
 msgid "show unreachable objects"
 msgstr "mostrar objetos ilegibles"
 
-#: builtin/fsck.c:776
+#: builtin/fsck.c:777
 msgid "show dangling objects"
 msgstr "mostrar objetos colgados"
 
-#: builtin/fsck.c:777
+#: builtin/fsck.c:778
 msgid "report tags"
 msgstr "reportar tags"
 
-#: builtin/fsck.c:778
+#: builtin/fsck.c:779
 msgid "report root nodes"
 msgstr "reportar nodos raíz"
 
-#: builtin/fsck.c:779
+#: builtin/fsck.c:780
 msgid "make index objects head nodes"
 msgstr "hacer objetos índices cabezas de nodos"
 
-#: builtin/fsck.c:780
+#: builtin/fsck.c:781
 msgid "make reflogs head nodes (default)"
 msgstr "hacer reflogs cabeza de nodos (default)"
 
-#: builtin/fsck.c:781
+#: builtin/fsck.c:782
 msgid "also consider packs and alternate objects"
 msgstr "también considerar paquetes y objetos alternos"
 
-#: builtin/fsck.c:782
+#: builtin/fsck.c:783
 msgid "check only connectivity"
 msgstr "revisar solo conectividad"
 
-#: builtin/fsck.c:783
+#: builtin/fsck.c:784
 msgid "enable more strict checking"
 msgstr "habilitar revisión más estricta"
 
-#: builtin/fsck.c:785
+#: builtin/fsck.c:786
 msgid "write dangling objects in .git/lost-found"
 msgstr "escribir objetos colgados en .git/lost-found"
 
-#: builtin/fsck.c:786 builtin/prune.c:134
+#: builtin/fsck.c:787 builtin/prune.c:134
 msgid "show progress"
 msgstr "mostrar progreso"
 
-#: builtin/fsck.c:787
+#: builtin/fsck.c:788
 msgid "show verbose names for reachable objects"
 msgstr "mostrar nombres verboso para objetos alcanzables"
 
-#: builtin/fsck.c:846 builtin/index-pack.c:225
+#: builtin/fsck.c:847 builtin/index-pack.c:225
 msgid "Checking objects"
 msgstr "Revisando objetos"
 
-#: builtin/fsck.c:874
+#: builtin/fsck.c:875
 #, c-format
 msgid "%s: object missing"
 msgstr "%s: objeto faltante"
 
-#: builtin/fsck.c:885
+#: builtin/fsck.c:886
 #, c-format
 msgid "invalid parameter: expected sha1, got '%s'"
 msgstr "parámetro inválido: sha1 esperado, se obtuvo '%s'"
@@ -14677,8 +14819,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1730
-#: builtin/pack-objects.c:2855
+#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1727
+#: builtin/pack-objects.c:2904
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "no hay soporte para hilos, ignorando %s"
@@ -14911,11 +15053,11 @@
 msgid "invalid option combination, ignoring --threads"
 msgstr "combinación de opciones inválida, ignorando --threads"
 
-#: builtin/grep.c:1084 builtin/pack-objects.c:3548
+#: builtin/grep.c:1084 builtin/pack-objects.c:3623
 msgid "no threads support, ignoring --threads"
 msgstr "no se soportan hilos, ignorando --threads"
 
-#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2852
+#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2901
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "número inválido de hilos especificado (%d)"
@@ -15118,7 +15260,7 @@
 msgid "used more bytes than were available"
 msgstr "se usaron más bytes de los disponibles"
 
-#: builtin/index-pack.c:288 builtin/pack-objects.c:607
+#: builtin/index-pack.c:288 builtin/pack-objects.c:618
 msgid "pack too large for current definition of off_t"
 msgstr "paquete muy grande para la definición actual de off_t"
 
@@ -15189,8 +15331,8 @@
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "¡COLISIÓN DE TIPO SHA1 ENCONTRADA CON %s !"
 
-#: builtin/index-pack.c:738 builtin/pack-objects.c:159
-#: builtin/pack-objects.c:219 builtin/pack-objects.c:314
+#: builtin/index-pack.c:738 builtin/pack-objects.c:170
+#: builtin/pack-objects.c:230 builtin/pack-objects.c:325
 #, c-format
 msgid "unable to read %s"
 msgstr "no se posible leer %s"
@@ -15251,7 +15393,7 @@
 msgid "Resolving deltas"
 msgstr "Resolviendo deltas"
 
-#: builtin/index-pack.c:1208 builtin/pack-objects.c:2616
+#: builtin/index-pack.c:1208 builtin/pack-objects.c:2665
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "no es posible crear hilo: %s"
@@ -15316,58 +15458,67 @@
 msgid "cannot store index file"
 msgstr "no se puede guardar el archivo índice"
 
-#: builtin/index-pack.c:1528 builtin/pack-objects.c:2863
+#: builtin/index-pack.c:1528 builtin/pack-objects.c:2912
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "mal pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1596
+#: builtin/index-pack.c:1592
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "No se puede abrir el archivo paquete existente '%s'"
 
-#: builtin/index-pack.c:1598
+#: builtin/index-pack.c:1594
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "No se puede abrir el índice del archivo paquete para '%s'"
 
-#: builtin/index-pack.c:1646
+#: builtin/index-pack.c:1642
 #, 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:1653
+#: builtin/index-pack.c:1649
 #, 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:1692
+#: builtin/index-pack.c:1689
 msgid "Cannot come back to cwd"
 msgstr "No se puede regresar a cwd"
 
-#: builtin/index-pack.c:1741 builtin/index-pack.c:1744
-#: builtin/index-pack.c:1760 builtin/index-pack.c:1764
+#: builtin/index-pack.c:1738 builtin/index-pack.c:1741
+#: builtin/index-pack.c:1757 builtin/index-pack.c:1761
 #, c-format
 msgid "bad %s"
 msgstr "mal %s"
 
-#: builtin/index-pack.c:1780
+#: builtin/index-pack.c:1767 builtin/init-db.c:392 builtin/init-db.c:621
+#, c-format
+msgid "unknown hash algorithm '%s'"
+msgstr "algoritmo hash desconocido '%s'"
+
+#: builtin/index-pack.c:1782
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin no puede ser usada sin --stdin"
 
-#: builtin/index-pack.c:1782
+#: builtin/index-pack.c:1784
 msgid "--stdin requires a git repository"
 msgstr "--stdin requiere un repositorio git"
 
-#: builtin/index-pack.c:1788
+#: builtin/index-pack.c:1786
+msgid "--object-format cannot be used with --stdin"
+msgstr "--object-format no se puede usar con --stdin"
+
+#: builtin/index-pack.c:1792
 msgid "--verify with no packfile name given"
 msgstr "--verify no recibió ningún nombre de archivo de paquete"
 
-#: builtin/index-pack.c:1836 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1840 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "error de fsck en objetos paquete"
 
@@ -15411,51 +15562,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "no se copian templates de '%s': %s"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:276
+#, c-format
+msgid "invalid initial branch name: '%s'"
+msgstr "nombre de rama inicial inválido: '%s'"
+
+#: builtin/init-db.c:368
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "no es posible manejar el tipo de archivo %d"
 
-#: builtin/init-db.c:359
+#: builtin/init-db.c:371
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "no se puede mover %s a %s"
 
-#: builtin/init-db.c:374
+#: builtin/init-db.c:386
 msgid "attempt to reinitialize repository with different hash"
 msgstr "intentar reinicializar el repositorio con un hash diferente"
 
-#: builtin/init-db.c:380 builtin/init-db.c:601
-#, c-format
-msgid "unknown hash algorithm '%s'"
-msgstr "algoritmo hash desconocido '%s'"
-
-#: builtin/init-db.c:397 builtin/init-db.c:400
+#: builtin/init-db.c:410 builtin/init-db.c:413
 #, c-format
 msgid "%s already exists"
 msgstr "%s ya existe"
 
-#: builtin/init-db.c:458
+#: builtin/init-db.c:444
+#, c-format
+msgid "re-init: ignored --initial-branch=%s"
+msgstr "re-init: ignorando --initial-branch=%s"
+
+#: builtin/init-db.c:475
 #, 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:459
+#: builtin/init-db.c:476
 #, 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:463
+#: builtin/init-db.c:480
 #, 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:464
+#: builtin/init-db.c:481
 #, 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:513
+#: builtin/init-db.c:530
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -15463,34 +15619,38 @@
 "git init [-q | --quiet] [--bare] [--template=<directorio-template>] [--"
 "shared[=<permisos>]] [<directorio>]"
 
-#: builtin/init-db.c:538
+#: builtin/init-db.c:556
 msgid "permissions"
 msgstr "permisos"
 
-#: builtin/init-db.c:539
+#: builtin/init-db.c:557
 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:544
+#: builtin/init-db.c:563
+msgid "override the name of the initial branch"
+msgstr "sobrescribir el nombre de la rama inicial"
+
+#: builtin/init-db.c:564
 msgid "hash"
 msgstr "hash"
 
-#: builtin/init-db.c:545
+#: builtin/init-db.c:565 builtin/show-index.c:22
 msgid "specify the hash algorithm to use"
 msgstr "especificar el algoritmo hash a usar"
 
-#: builtin/init-db.c:578 builtin/init-db.c:583
+#: builtin/init-db.c:598 builtin/init-db.c:603
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "no se pude crear directorio %s"
 
-#: builtin/init-db.c:587
+#: builtin/init-db.c:607
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "no se puede aplicar chdir a %s"
 
-#: builtin/init-db.c:614
+#: builtin/init-db.c:634
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -15499,7 +15659,7 @@
 "%s (o --work-tree=<directorio>) no se permite sin especificar %s (o --git-"
 "dir=<directorio>)"
 
-#: builtin/init-db.c:642
+#: builtin/init-db.c:662
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "No se puede acceder al árbol de trabajo '%s'"
@@ -17261,7 +17421,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:164
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
 msgid "do not remove, show only"
 msgstr "no eliminar, solo mostrar"
 
@@ -17296,106 +17456,123 @@
 "git pack-objects [<opciones>...] <nombre-base> [< <lista-de-refs> | < <lista-"
 "de-objetos>]"
 
-#: builtin/pack-objects.c:431
+#: builtin/pack-objects.c:442
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "mal paquete de objeto CRC para %s"
 
-#: builtin/pack-objects.c:442
+#: builtin/pack-objects.c:453
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "objeto empaquetado corrupto para %s"
 
-#: builtin/pack-objects.c:573
+#: builtin/pack-objects.c:584
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "delta recursivo encontrado para objeto %s"
 
-#: builtin/pack-objects.c:784
+#: builtin/pack-objects.c:795
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "%u objetos ordenados, esperados %<PRIu32>"
 
-#: builtin/pack-objects.c:973
+#: builtin/pack-objects.c:1003
 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:986
+#: builtin/pack-objects.c:1016
 msgid "Writing objects"
 msgstr "Escribiendo objetos"
 
-#: builtin/pack-objects.c:1047 builtin/update-index.c:90
+#: builtin/pack-objects.c:1077 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "falló al iniciar %s"
 
-#: builtin/pack-objects.c:1100
+#: builtin/pack-objects.c:1130
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "%<PRIu32> objetos escritos mientras se esperaban %<PRIu32>"
 
-#: builtin/pack-objects.c:1298
+#: builtin/pack-objects.c:1347
 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:1725
+#: builtin/pack-objects.c:1774
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "overflow de offset en la base de delta en paquete para %s"
 
-#: builtin/pack-objects.c:1734
+#: builtin/pack-objects.c:1783
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "outbound de offset en la base de delta para %s"
 
-#: builtin/pack-objects.c:2005
+#: builtin/pack-objects.c:2054
 msgid "Counting objects"
 msgstr "Contando objetos"
 
-#: builtin/pack-objects.c:2150
+#: builtin/pack-objects.c:2199
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "incapaz de analizar header del objeto %s"
 
-#: builtin/pack-objects.c:2220 builtin/pack-objects.c:2236
-#: builtin/pack-objects.c:2246
+#: builtin/pack-objects.c:2269 builtin/pack-objects.c:2285
+#: builtin/pack-objects.c:2295
 #, c-format
 msgid "object %s cannot be read"
 msgstr "objeto %s no puede ser leído"
 
-#: builtin/pack-objects.c:2223 builtin/pack-objects.c:2250
+#: builtin/pack-objects.c:2272 builtin/pack-objects.c:2299
 #, 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:2260
+#: builtin/pack-objects.c:2309
 msgid "suboptimal pack - out of memory"
 msgstr "suboptimal pack - fuera de memoria"
 
-#: builtin/pack-objects.c:2575
+#: builtin/pack-objects.c:2624
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Compresión delta usando hasta %d hilos"
 
-#: builtin/pack-objects.c:2714
+#: builtin/pack-objects.c:2763
 #, 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:2802
+#: builtin/pack-objects.c:2851
 msgid "Compressing objects"
 msgstr "Comprimiendo objetos"
 
-#: builtin/pack-objects.c:2808
+#: builtin/pack-objects.c:2857
 msgid "inconsistency with delta count"
 msgstr "inconsistencia con la cuenta de delta"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2929
+#, c-format
+msgid ""
+"value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
+"hash> <uri>' (got '%s')"
+msgstr ""
+"valor para uploadpack.blobpackfileuri tiene que ser de la forma '<hash-de-"
+"objeto> <hash-de-pack> <uri>' (se tuvo '%s')"
+
+#: builtin/pack-objects.c:2932
+#, c-format
+msgid ""
+"object already configured in another uploadpack.blobpackfileuri (got '%s')"
+msgstr ""
+"objeto ya está configurado en otro uploadpack.blobpackfileuri (se obtuvo "
+"'%s')"
+
+#: builtin/pack-objects.c:2961
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -17404,7 +17581,7 @@
 "se espseraba ID de objeto al borde, se obtuvo basura:\n"
 "%s"
 
-#: builtin/pack-objects.c:2895
+#: builtin/pack-objects.c:2967
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -17413,230 +17590,240 @@
 "se esperaba ID de objeto, se obtuvo basuta:\n"
 "%s"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3065
 msgid "invalid value for --missing"
 msgstr "valor inválido para --missing"
 
-#: builtin/pack-objects.c:3052 builtin/pack-objects.c:3160
+#: builtin/pack-objects.c:3124 builtin/pack-objects.c:3232
 msgid "cannot open pack index"
 msgstr "no se puede abrir índice de paquetes"
 
-#: builtin/pack-objects.c:3083
+#: builtin/pack-objects.c:3155
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "objeto perdido en %s no pudo ser examinado"
 
-#: builtin/pack-objects.c:3168
+#: builtin/pack-objects.c:3240
 msgid "unable to force loose object"
 msgstr "incapaz de forzar un objeto perdido"
 
-#: builtin/pack-objects.c:3261
+#: builtin/pack-objects.c:3333
 #, c-format
 msgid "not a rev '%s'"
 msgstr "no es una rev '%s'"
 
-#: builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3336
 #, c-format
 msgid "bad revision '%s'"
 msgstr "mala revisión '%s'"
 
-#: builtin/pack-objects.c:3289
+#: builtin/pack-objects.c:3361
 msgid "unable to add recent objects"
 msgstr "incapaz de añadir objetos recientes"
 
-#: builtin/pack-objects.c:3342
+#: builtin/pack-objects.c:3414
 #, c-format
 msgid "unsupported index version %s"
 msgstr "versión de índice no soportada %s"
 
-#: builtin/pack-objects.c:3346
+#: builtin/pack-objects.c:3418
 #, c-format
 msgid "bad index version '%s'"
 msgstr "mala versión del índice '%s'"
 
-#: builtin/pack-objects.c:3384
+#: builtin/pack-objects.c:3456
 msgid "<version>[,<offset>]"
 msgstr "<versión>[,<offset>]"
 
-#: builtin/pack-objects.c:3385
+#: builtin/pack-objects.c:3457
 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:3388
+#: builtin/pack-objects.c:3460
 msgid "maximum size of each output pack file"
 msgstr "tamaño máximo de cada paquete resultante"
 
-#: builtin/pack-objects.c:3390
+#: builtin/pack-objects.c:3462
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignorar objetos prestados de otros almacenes de objetos"
 
-#: builtin/pack-objects.c:3392
+#: builtin/pack-objects.c:3464
 msgid "ignore packed objects"
 msgstr "ignorar objetos paquete"
 
-#: builtin/pack-objects.c:3394
+#: builtin/pack-objects.c:3466
 msgid "limit pack window by objects"
 msgstr "limitar ventana de paquete por objetos"
 
-#: builtin/pack-objects.c:3396
+#: builtin/pack-objects.c:3468
 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:3398
+#: builtin/pack-objects.c:3470
 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:3400
+#: builtin/pack-objects.c:3472
 msgid "reuse existing deltas"
 msgstr "reusar deltas existentes"
 
-#: builtin/pack-objects.c:3402
+#: builtin/pack-objects.c:3474
 msgid "reuse existing objects"
 msgstr "reutilizar objetos existentes"
 
-#: builtin/pack-objects.c:3404
+#: builtin/pack-objects.c:3476
 msgid "use OFS_DELTA objects"
 msgstr "usar objetos OFS_DELTA"
 
-#: builtin/pack-objects.c:3406
+#: builtin/pack-objects.c:3478
 msgid "use threads when searching for best delta matches"
 msgstr "usar hilos cuando se busque para mejores concordancias de delta"
 
-#: builtin/pack-objects.c:3408
+#: builtin/pack-objects.c:3480
 msgid "do not create an empty pack output"
 msgstr "no crear un paquete resultante vacío"
 
-#: builtin/pack-objects.c:3410
+#: builtin/pack-objects.c:3482
 msgid "read revision arguments from standard input"
 msgstr "leer argumentos de revisión de standard input"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3484
 msgid "limit the objects to those that are not yet packed"
 msgstr "limitar los objetos a aquellos que no han sido empaquetados todavía"
 
-#: builtin/pack-objects.c:3415
+#: builtin/pack-objects.c:3487
 msgid "include objects reachable from any reference"
 msgstr "incluir objetos alcanzables por cualquier referencia"
 
-#: builtin/pack-objects.c:3418
+#: builtin/pack-objects.c:3490
 msgid "include objects referred by reflog entries"
 msgstr "incluir objetos referidos por entradas de reflog"
 
-#: builtin/pack-objects.c:3421
+#: builtin/pack-objects.c:3493
 msgid "include objects referred to by the index"
 msgstr "incluir objetos referidos por el índice"
 
-#: builtin/pack-objects.c:3424
+#: builtin/pack-objects.c:3496
 msgid "output pack to stdout"
 msgstr "mostrar paquete en stdout"
 
-#: builtin/pack-objects.c:3426
+#: builtin/pack-objects.c:3498
 msgid "include tag objects that refer to objects to be packed"
 msgstr "incluir objetos tag que refieren a objetos a ser empaquetados"
 
-#: builtin/pack-objects.c:3428
+#: builtin/pack-objects.c:3500
 msgid "keep unreachable objects"
 msgstr "mantener objetos inalcanzables"
 
-#: builtin/pack-objects.c:3430
+#: builtin/pack-objects.c:3502
 msgid "pack loose unreachable objects"
 msgstr "empaquetar objetos sueltos inalcanzables"
 
-#: builtin/pack-objects.c:3432
+#: builtin/pack-objects.c:3504
 msgid "unpack unreachable objects newer than <time>"
 msgstr "desempaquetar objetos inalcanzables más nuevos que <tiempo>"
 
-#: builtin/pack-objects.c:3435
+#: builtin/pack-objects.c:3507
 msgid "use the sparse reachability algorithm"
 msgstr "usar el algoritmo sparse reachability"
 
-#: builtin/pack-objects.c:3437
+#: builtin/pack-objects.c:3509
 msgid "create thin packs"
 msgstr "crear paquetes delgados"
 
-#: builtin/pack-objects.c:3439
+#: builtin/pack-objects.c:3511
 msgid "create packs suitable for shallow fetches"
 msgstr "crear paquetes adecuados para fetches superficiales"
 
-#: builtin/pack-objects.c:3441
+#: builtin/pack-objects.c:3513
 msgid "ignore packs that have companion .keep file"
 msgstr "ignorar paquetes que tienen un archivo .keep acompañante"
 
-#: builtin/pack-objects.c:3443
+#: builtin/pack-objects.c:3515
 msgid "ignore this pack"
 msgstr "ignorar este paquete"
 
-#: builtin/pack-objects.c:3445
+#: builtin/pack-objects.c:3517
 msgid "pack compression level"
 msgstr "nivel de compresión del paquete"
 
-#: builtin/pack-objects.c:3447
+#: builtin/pack-objects.c:3519
 msgid "do not hide commits by grafts"
 msgstr "no ocultar commits por injertos"
 
-#: builtin/pack-objects.c:3449
+#: builtin/pack-objects.c:3521
 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:3451
+#: builtin/pack-objects.c:3523
 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:3455
+#: builtin/pack-objects.c:3527
 msgid "write a bitmap index if possible"
 msgstr "escribir un índice de bitmap si es posible"
 
-#: builtin/pack-objects.c:3459
+#: builtin/pack-objects.c:3531
 msgid "handling for missing objects"
 msgstr "manejo de objetos perdidos"
 
-#: builtin/pack-objects.c:3462
+#: builtin/pack-objects.c:3534
 msgid "do not pack objects in promisor packfiles"
 msgstr "no se puede empaquetar objetos en packfiles promisores"
 
-#: builtin/pack-objects.c:3464
+#: builtin/pack-objects.c:3536
 msgid "respect islands during delta compression"
 msgstr "respetar islas durante la compresión delta"
 
-#: builtin/pack-objects.c:3493
+#: builtin/pack-objects.c:3538
+msgid "protocol"
+msgstr "protocolo"
+
+#: builtin/pack-objects.c:3539
+msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
+msgstr ""
+"excluyendo cualquier uploadpack.blobpackfileuri configurado con este "
+"protocolo"
+
+#: builtin/pack-objects.c:3568
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "profundidad de cadena de delta %d es muy profunda, forzando %d"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3573
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit es muy grande, forzando %d"
 
-#: builtin/pack-objects.c:3552
+#: builtin/pack-objects.c:3627
 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:3554
+#: builtin/pack-objects.c:3629
 msgid "minimum pack size limit is 1 MiB"
 msgstr "tamaño mínimo del paquete es 1 MiB"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3634
 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:3562
+#: builtin/pack-objects.c:3637
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable y --unpack-unreachable son incompatibles"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3643
 msgid "cannot use --filter without --stdout"
 msgstr "no se puede usar--filter sin --stdout"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3703
 msgid "Enumerating objects"
 msgstr "Enumerando objetos"
 
-#: builtin/pack-objects.c:3658
+#: builtin/pack-objects.c:3734
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18939,7 +19126,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <git-dir>"
 
-#: builtin/receive-pack.c:843
+#: builtin/receive-pack.c:844
 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"
@@ -18972,7 +19159,7 @@
 "Para suprimir este mensaje y mantener el comportamiento predeterminado,\n"
 "configura 'receive.denyCurrentBranch' a 'refuse'."
 
-#: builtin/receive-pack.c:863
+#: builtin/receive-pack.c:864
 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"
@@ -18993,11 +19180,11 @@
 "\n"
 "Para suprimir este mensaje, puedes configurarlo en 'refuse'."
 
-#: builtin/receive-pack.c:1960
+#: builtin/receive-pack.c:1970
 msgid "quiet"
 msgstr "tranquilo"
 
-#: builtin/receive-pack.c:1974
+#: builtin/receive-pack.c:1984
 msgid "You must specify a directory."
 msgstr "Se tiene que especificar un directorio."
 
@@ -20554,6 +20741,14 @@
 msgid "cannot find commit %s (%s)"
 msgstr "no se puede encontrar el commit %s (%s)"
 
+#: builtin/show-index.c:21
+msgid "hash-algorithm"
+msgstr "algoritmo-hash"
+
+#: builtin/show-index.c:31
+msgid "Unknown hash algorithm"
+msgstr "Algoritmo hash desconocido"
+
 #: builtin/show-ref.c:12
 msgid ""
 "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
@@ -20608,50 +20803,56 @@
 "este árbol de trabajo no tiene sparse (archivo sparese-checkout tal vez no "
 "existe)"
 
-#: builtin/sparse-checkout.c:212
+#: builtin/sparse-checkout.c:216
 msgid "failed to create directory for sparse-checkout file"
 msgstr "falló al crear directorio para el archivo sparse-checkout"
 
-#: builtin/sparse-checkout.c:253
+#: builtin/sparse-checkout.c:257
+msgid "unable to upgrade repository format to enable worktreeConfig"
+msgstr ""
+"no es posible actualizar el formato de repositorio para habilitar "
+"worktreeConfig"
+
+#: builtin/sparse-checkout.c:259
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "falló al configurar opción extensions.worktreeConfig"
 
-#: builtin/sparse-checkout.c:270
+#: builtin/sparse-checkout.c:276
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:289
+#: builtin/sparse-checkout.c:295
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "inicializa el sparse-checkout en modo cono"
 
-#: builtin/sparse-checkout.c:326
+#: builtin/sparse-checkout.c:332
 #, c-format
 msgid "failed to open '%s'"
 msgstr "falló al abrir '%s'"
 
-#: builtin/sparse-checkout.c:383
+#: builtin/sparse-checkout.c:389
 #, c-format
 msgid "could not normalize path %s"
 msgstr "no se pudo normalizar la ruta %s"
 
-#: builtin/sparse-checkout.c:395
+#: builtin/sparse-checkout.c:401
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <patrones>)"
 
-#: builtin/sparse-checkout.c:420
+#: builtin/sparse-checkout.c:426
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "no es posible dequote para la cadena de estilo C '%s'"
 
-#: builtin/sparse-checkout.c:474 builtin/sparse-checkout.c:498
+#: builtin/sparse-checkout.c:480 builtin/sparse-checkout.c:504
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "no se pudo cargar patrones de sparse-checkout existentes"
 
-#: builtin/sparse-checkout.c:543
+#: builtin/sparse-checkout.c:549
 msgid "read patterns from standard in"
 msgstr "leer patrones de standard in"
 
-#: builtin/sparse-checkout.c:580
+#: builtin/sparse-checkout.c:586
 msgid "error while refreshing working directory"
 msgstr "error al refrescar directorio de trabajo"
 
@@ -21357,12 +21558,38 @@
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <ruta> <nueva url>"
 
-#: builtin/submodule--helper.c:2323 git.c:436 git.c:683
+#: builtin/submodule--helper.c:2294
+msgid "set the default tracking branch to master"
+msgstr "configurar la rama de rastreo por defecto a master"
+
+#: builtin/submodule--helper.c:2296
+msgid "set the default tracking branch"
+msgstr "configurar la rama de rastreo por defecto"
+
+#: builtin/submodule--helper.c:2300
+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:2301
+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:2308
+msgid "--branch or --default required"
+msgstr "--branch o --default requeridos"
+
+#: builtin/submodule--helper.c:2311
+msgid "--branch and --default are mutually exclusive"
+msgstr "--branch y --default son mutuamente exclusivos"
+
+#: builtin/submodule--helper.c:2367 git.c:436 git.c:683
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s no soporta --super-prefix"
 
-#: builtin/submodule--helper.c:2329
+#: builtin/submodule--helper.c:2373
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' no es un comando submodule--helper válido"
@@ -22000,201 +22227,192 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <ruta>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:894
+#: builtin/worktree.c:60 builtin/worktree.c:972
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "falló al borrar '%s'"
 
-#: builtin/worktree.c:79
-#, c-format
-msgid "Removing worktrees/%s: not a valid directory"
-msgstr "Removiendo el worktrees/%s: no es un directorio válido"
-
 #: builtin/worktree.c:85
-#, c-format
-msgid "Removing worktrees/%s: gitdir file does not exist"
-msgstr "Removiendo worktrees/%s: archivo gitdir no existe"
+msgid "not a valid directory"
+msgstr "no en un directorio válido"
 
-#: builtin/worktree.c:90 builtin/worktree.c:99
-#, c-format
-msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
-msgstr "Removiendo worktrees/%s: no es posible leer el archivo gitdir (%s)"
+#: builtin/worktree.c:91
+msgid "gitdir file does not exist"
+msgstr "archivo gitdir no existe"
 
-#: builtin/worktree.c:109
+#: builtin/worktree.c:96 builtin/worktree.c:105
 #, c-format
-msgid ""
-"Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
-"%<PRIuMAX>)"
-msgstr ""
-"Removiendo árboles de trabajo/%s: lectura corta (se esperan %<PRIuMAX> "
-"bytes, %<PRIuMAX> leídos)"
+msgid "unable to read gitdir file (%s)"
+msgstr "no es posible leer archivo gitdir (%s)"
 
-#: builtin/worktree.c:117
+#: builtin/worktree.c:115
 #, c-format
-msgid "Removing worktrees/%s: invalid gitdir file"
-msgstr "Removiendo worktrees/%s: archivo gitdir inválido"
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "lectura corta (se esperaba %<PRIuMAX> bytes, se leyó %<PRIuMAX>)"
 
-#: builtin/worktree.c:126
+#: builtin/worktree.c:123
+msgid "invalid gitdir file"
+msgstr "archivo gitdir inválido"
+
+#: builtin/worktree.c:131
+msgid "gitdir file points to non-existent location"
+msgstr "archivo gitdir apunta a una ubicación inexistente"
+
+#: builtin/worktree.c:146
 #, c-format
-msgid "Removing worktrees/%s: gitdir file points to non-existent location"
-msgstr ""
-"Removiendo worktrees/%s: archivo gitdir apunta a una ubicación no existente"
+msgid "Removing %s/%s: %s"
+msgstr "Eliminando %s/%s: %s"
 
-#: builtin/worktree.c:165
+#: builtin/worktree.c:221
 msgid "report pruned working trees"
 msgstr "reporta árboles de trabajo recortados"
 
-#: builtin/worktree.c:167
+#: builtin/worktree.c:223
 msgid "expire working trees older than <time>"
 msgstr "expirar árboles de trabajo más viejos a <tiempo>"
 
-#: builtin/worktree.c:234
+#: builtin/worktree.c:293
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' ya existe"
 
-#: builtin/worktree.c:244
+#: builtin/worktree.c:302
 #, c-format
-msgid "unable to re-add worktree '%s'"
-msgstr "no es posible volver a agregar el árbol '%s'"
+msgid "unusable worktree destination '%s'"
+msgstr "destino de worktree inutilizable '%s'"
 
-#: builtin/worktree.c:249
+#: builtin/worktree.c:307
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
-"use 'add -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
+"use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
 "'%s' es un árbol de trabajo faltante pero bloqueado;\n"
-"usa 'add -f -f' para sobreescribir, o 'unlock' y 'prune' o 'remove' para "
+"usa '%s -f -f' para sobreescribir, o 'unlock' y 'prune' o 'remove' para "
 "limpiar"
 
-#: builtin/worktree.c:251
+#: builtin/worktree.c:309
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
-"use 'add -f' to override, or 'prune' or 'remove' to clear"
+"use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
 "'%s' es un árbol de trabajo faltante pero ya registrado;\n"
-"usa 'add -f' para sobreescribir, o 'prune' o 'remove' para limpiar"
+"usa '%s -f' para sobreescribir, o 'prune' o 'remove' para limpiar"
 
-#: builtin/worktree.c:301
+#: builtin/worktree.c:360
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "no se pudo crear directorio de '%s'"
 
-#: builtin/worktree.c:435 builtin/worktree.c:441
+#: builtin/worktree.c:494 builtin/worktree.c:500
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Preparando árbol de trabajo (nueva rama '%s')"
 
-#: builtin/worktree.c:437
+#: builtin/worktree.c:496
 #, 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:446
+#: builtin/worktree.c:505
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Preparando árbol de trabajo (haciendo checkout a '%s')"
 
-#: builtin/worktree.c:452
+#: builtin/worktree.c:511
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Preparando árbol de trabajo (HEAD desacoplado %s)"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:552
 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 "
 "trabajo"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:555
 msgid "create a new branch"
 msgstr "crear una nueva rama"
 
-#: builtin/worktree.c:498
+#: builtin/worktree.c:557
 msgid "create or reset a branch"
 msgstr "crear o restablecer una rama"
 
-#: builtin/worktree.c:500
+#: builtin/worktree.c:559
 msgid "populate the new working tree"
 msgstr "popular el nuevo árbol de trabajo"
 
-#: builtin/worktree.c:501
+#: builtin/worktree.c:560
 msgid "keep the new working tree locked"
 msgstr "mantener el nuevo árbol de trabajo bloqueado"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:563
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "configurando modo tracking (mirar git-branch(1))"
 
-#: builtin/worktree.c:507
+#: builtin/worktree.c:566
 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:515
+#: builtin/worktree.c:574
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B, y --detach son mutuamente exclusivas"
 
-#: builtin/worktree.c:576
+#: builtin/worktree.c:635
 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:676
+#: builtin/worktree.c:755
 msgid "reason for locking"
 msgstr "razón para bloquear"
 
-#: builtin/worktree.c:688 builtin/worktree.c:721 builtin/worktree.c:795
-#: builtin/worktree.c:922
+#: builtin/worktree.c:767 builtin/worktree.c:800 builtin/worktree.c:874
+#: builtin/worktree.c:1000
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' no es un árbol de trabajo"
 
-#: builtin/worktree.c:690 builtin/worktree.c:723
+#: builtin/worktree.c:769 builtin/worktree.c:802
 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:695
+#: builtin/worktree.c:774
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' ya está bloqueado; razón: %s"
 
-#: builtin/worktree.c:697
+#: builtin/worktree.c:776
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' ya está bloqueado"
 
-#: builtin/worktree.c:725
+#: builtin/worktree.c:804
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' no está bloqueado"
 
-#: builtin/worktree.c:766
+#: builtin/worktree.c:845
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 "árboles de trabajo conteniendo submódulos no puede ser movidos o eliminado"
 
-#: builtin/worktree.c:774
+#: builtin/worktree.c:853
 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:797 builtin/worktree.c:924
+#: builtin/worktree.c:876 builtin/worktree.c:1002
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' es un árbol de trabajo principal"
 
-#: builtin/worktree.c:802
+#: builtin/worktree.c:881
 #, 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:808
-#, c-format
-msgid "target '%s' already exists"
-msgstr "el objetivo '%s' ya existe"
-
-#: builtin/worktree.c:816
+#: builtin/worktree.c:894
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -22203,7 +22421,7 @@
 "no se puede mover un árbol de trabajo bloqueado, motivo del bloqueo: %s\n"
 "use 'move -f -f' para sobreescribir o desbloquear primero"
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:896
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -22211,37 +22429,37 @@
 "no se puede mover un árbol de trabajo bloqueado;\n"
 "use 'move -f -f' para sobreescribir o desbloquear primero"
 
-#: builtin/worktree.c:821
+#: builtin/worktree.c:899
 #, 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:826
+#: builtin/worktree.c:904
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "falló al mover '%s' a '%s'"
 
-#: builtin/worktree.c:874
+#: builtin/worktree.c:952
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "falló al ejecutar 'git status' en '%s'"
 
-#: builtin/worktree.c:878
+#: builtin/worktree.c:956
 #, 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"
 
-#: builtin/worktree.c:883
+#: builtin/worktree.c:961
 #, 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:906
+#: builtin/worktree.c:984
 msgid "force removal even if worktree is dirty or locked"
 msgstr "forzar remoción incluso si el árbol de trabajo está sucio o bloqueado"
 
-#: builtin/worktree.c:929
+#: builtin/worktree.c:1007
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -22250,7 +22468,7 @@
 "no se pueden eliminar árbol de trabajo bloqueado, razón del bloqueo: %s\n"
 "use 'remove -f -f' para sobreescribir o desbloquear primero"
 
-#: builtin/worktree.c:931
+#: builtin/worktree.c:1009
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -22258,7 +22476,7 @@
 "no se pueden eliminar árbol de trabajo bloqueado;\n"
 "use 'remove -f -f' para sobreescribir o desbloquear primero"
 
-#: builtin/worktree.c:934
+#: builtin/worktree.c:1012
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "falló validación, no se puede eliminar árbol de trabajo: %s"
@@ -22279,33 +22497,33 @@
 msgid "only useful for debugging"
 msgstr "sólo útil para depurar"
 
-#: bugreport.c:14
+#: bugreport.c:15
 msgid "git version:\n"
 msgstr "versión de git:\n"
 
-#: bugreport.c:20
+#: bugreport.c:21
 #, c-format
 msgid "uname() failed with error '%s' (%d)\n"
 msgstr "uname() falló con error '%s' (%d)\n"
 
-#: bugreport.c:30
+#: bugreport.c:31
 msgid "compiler info: "
 msgstr "información del compilador: "
 
-#: bugreport.c:32
+#: bugreport.c:34
 msgid "libc info: "
 msgstr "información de libc: "
 
-#: bugreport.c:74
+#: bugreport.c:80
 msgid "not run from a git repository - no hooks to show\n"
 msgstr "no ejecutado desde un repositorio git - no hay hooks para mostrar\n"
 
-#: bugreport.c:84
+#: bugreport.c:90
 msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
 msgstr ""
 "git bugreport [-o|--output-directory <archivo>] [-s|--suffix <formato>]"
 
-#: bugreport.c:91
+#: bugreport.c:97
 msgid ""
 "Thank you for filling out a Git bug report!\n"
 "Please answer the following questions to help us understand your issue.\n"
@@ -22341,68 +22559,78 @@
 "Por favor revisa el resto del reporte abajo.\n"
 "Puedes borrar cualquier línea que no desees compartir.\n"
 
-#: bugreport.c:130
+#: bugreport.c:136
 msgid "specify a destination for the bugreport file"
 msgstr "especificar el destino para el archivo de reporte de bug"
 
-#: bugreport.c:132
+#: bugreport.c:138
 msgid "specify a strftime format suffix for the filename"
 msgstr "especificar el sufijo formato strftime para el nombre del archivo."
 
-#: bugreport.c:156
+#: bugreport.c:162
 #, c-format
 msgid "could not create leading directories for '%s'"
 msgstr "no se pudo crear directorios principales para '%s'"
 
-#: bugreport.c:163
+#: bugreport.c:169
 msgid "System Info"
 msgstr "Información del sistema"
 
-#: bugreport.c:166
+#: bugreport.c:172
 msgid "Enabled Hooks"
 msgstr "Activar Hooks"
 
-#: bugreport.c:174
+#: bugreport.c:180
 #, c-format
 msgid "couldn't create a new file at '%s'"
 msgstr "no se pudo crear un archivo en '%s'"
 
-#: bugreport.c:186
+#: bugreport.c:184
+#, c-format
+msgid "unable to write to %s"
+msgstr "no es posible escribir en %s"
+
+#: bugreport.c:194
 #, c-format
 msgid "Created new report at '%s'.\n"
 msgstr "Crear un nuevo reporte en '%s'.\n"
 
-#: fast-import.c:3085
+#: fast-import.c:3100
 #, c-format
 msgid "Missing from marks for submodule '%s'"
 msgstr "Faltan marcas from para el submódulo '%s'"
 
-#: fast-import.c:3087
+#: fast-import.c:3102
 #, c-format
 msgid "Missing to marks for submodule '%s'"
 msgstr "Faltan marcas to para el submódulo '%s'"
 
-#: fast-import.c:3222
+#: fast-import.c:3237
 #, c-format
 msgid "Expected 'mark' command, got %s"
 msgstr "Se esperaba comando 'mark', se obtuvo %s"
 
-#: fast-import.c:3227
+#: fast-import.c:3242
 #, c-format
 msgid "Expected 'to' command, got %s"
 msgstr "Se esperaba comando 'to', se obtuvo %s"
 
-#: fast-import.c:3317
+#: fast-import.c:3334
 msgid "Expected format name:filename for submodule rewrite option"
 msgstr ""
 "Formato esperado de nombre:nombre de archivo para la opción de sobreescribir "
 "submódulo"
 
-#: fast-import.c:3371
+#: fast-import.c:3388
 #, c-format
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "característica '%s' prohibida en input sin --allow-unsafe-features"
 
+#: http-fetch.c:111
+#, c-format
+msgid "argument to --packfile must be a valid hash (got '%s')"
+msgstr "argumento para --packfile tiene que se un hash válido (se obtuvo '%s')"
+
 #: credential-cache--daemon.c:223
 #, c-format
 msgid ""
@@ -22581,32 +22809,32 @@
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr "Fijación de llave pública no es soportada con cURL < 7.44.0"
 
-#: http.c:914
+#: http.c:910
 msgid "CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0"
 msgstr "CURLSSLOPT_NO_REVOKE no soportado con cURL < 7.44.0"
 
-#: http.c:993
+#: http.c:989
 msgid "Protocol restrictions not supported with cURL < 7.19.4"
 msgstr "Restricción de protocolo no soportada con cURL < 7.19.4"
 
-#: http.c:1139
+#: http.c:1132
 #, c-format
 msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
 msgstr "Backend SSL no soportado '%s'. Backends SSL soportados:"
 
-#: http.c:1146
+#: http.c:1139
 #, c-format
 msgid "Could not set SSL backend to '%s': cURL was built without SSL backends"
 msgstr ""
 "No se pudo configurar backend SSL a '%s': cURL fue construido sin backends "
 "SSL"
 
-#: http.c:1150
+#: http.c:1143
 #, c-format
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "No se pudo configurar backend SSL para '%s': ya configurado"
 
-#: http.c:2032
+#: http.c:2025
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -22617,114 +22845,137 @@
 "  preguntaba por: %s\n"
 "   redireccionamiento: %s"
 
-#: remote-curl.c:166
+#: remote-curl.c:168
 #, c-format
 msgid "invalid quoting in push-option value: '%s'"
 msgstr "quoting inválido en valor de push-option: '%s'"
 
-#: remote-curl.c:263
+#: remote-curl.c:295
 #, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
 msgstr "%sinfo/refs no es válido: ¿es este un repositorio git?"
 
-#: remote-curl.c:364
+#: remote-curl.c:396
 msgid "invalid server response; expected service, got flush packet"
 msgstr ""
 "respuesta de servidor inválida; se esperaba servicio, se obtuvo un flush "
 "packet"
 
-#: remote-curl.c:395
+#: remote-curl.c:427
 #, c-format
 msgid "invalid server response; got '%s'"
 msgstr "respuesta de servidor inválida; se obtuvo '%s'"
 
-#: remote-curl.c:455
+#: remote-curl.c:487
 #, c-format
 msgid "repository '%s' not found"
 msgstr "repositorio '%s' no encontrado"
 
-#: remote-curl.c:459
+#: remote-curl.c:491
 #, c-format
 msgid "Authentication failed for '%s'"
 msgstr "Autenticación falló para '%s'"
 
-#: remote-curl.c:463
+#: remote-curl.c:495
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr "no es posible acceder '%s':%s"
 
-#: remote-curl.c:469
+#: remote-curl.c:501
 #, c-format
 msgid "redirecting to %s"
 msgstr "redirigiendo a %s"
 
-#: remote-curl.c:593
+#: remote-curl.c:630
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "no debería tener EOF cuando no es gentil en EOF"
 
-#: remote-curl.c:673
+#: remote-curl.c:642
+msgid "remote server sent stateless separator"
+msgstr "el servidor remoto envió un separador sin estado (stateless)"
+
+#: remote-curl.c:712
 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:733
+#: remote-curl.c:742
+#, c-format
+msgid "remote-curl: bad line length character: %.4s"
+msgstr "remote-curl: mal caracter de largo de línea: %.4s"
+
+#: remote-curl.c:744
+msgid "remote-curl: unexpected response end packet"
+msgstr "remote-curl: packet de respuesta final inesperado"
+
+#: remote-curl.c:820
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC falló; %s"
 
-#: remote-curl.c:773
+#: remote-curl.c:860
 msgid "cannot handle pushes this big"
 msgstr "no se puede manejar pushes tan grandes"
 
-#: remote-curl.c:888
+#: remote-curl.c:975
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "no se puede desinflar el request; zlib deflate error %d"
 
-#: remote-curl.c:892
+#: remote-curl.c:979
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "no se puede desinflar el request; zlib end error %d"
 
-#: remote-curl.c:1023
+#: remote-curl.c:1029
+#, c-format
+msgid "%d bytes of length header were received"
+msgstr "%d bytes de header de longitud fueron recibidos"
+
+#: remote-curl.c:1031
+#, c-format
+msgid "%d bytes of body are still expected"
+msgstr "%d bytes de cuerpo se siguen esperando"
+
+#: remote-curl.c:1120
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "dump http transport no soporta capacidades superficiales"
 
-#: remote-curl.c:1038
+#: remote-curl.c:1135
 msgid "fetch failed."
 msgstr "fetch falló."
 
-#: remote-curl.c:1086
+#: remote-curl.c:1183
 msgid "cannot fetch by sha1 over smart http"
 msgstr "no se puede hacer fetch por sha1 sobre smart http"
 
-#: remote-curl.c:1130 remote-curl.c:1136
+#: remote-curl.c:1227 remote-curl.c:1233
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "error de protocolo: se esperaba sha/ref, se obtuvo '%s'"
 
-#: remote-curl.c:1148 remote-curl.c:1263
+#: remote-curl.c:1245 remote-curl.c:1360
 #, c-format
 msgid "http transport does not support %s"
 msgstr "http transport no soporta %s"
 
-#: remote-curl.c:1184
+#: remote-curl.c:1281
 msgid "git-http-push failed"
 msgstr "git-http-push falló"
 
-#: remote-curl.c:1369
+#: remote-curl.c:1466
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: uso: git remote-curl <remote> [<url>]"
 
-#: remote-curl.c:1401
+#: remote-curl.c:1498
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl: error leyendo command stream de git"
 
-#: remote-curl.c:1408
+#: remote-curl.c:1505
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl: fetch intentado sin un repositorio local"
 
-#: remote-curl.c:1448
+#: remote-curl.c:1546
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl: comando '%s' desconocido de git"
@@ -23431,46 +23682,50 @@
 msgstr "Un conjunto mínimo útil de comandos diarios de Git"
 
 #: command-list.h:203
+msgid "Frequently asked questions about using Git"
+msgstr "Preguntas frecuentes sobre el uso de Git"
+
+#: command-list.h:204
 msgid "A Git Glossary"
 msgstr "Un Glosario de Git"
 
-#: command-list.h:204
+#: command-list.h:205
 msgid "Hooks used by Git"
 msgstr "Hooks utilizados por Git"
 
-#: command-list.h:205
+#: command-list.h:206
 msgid "Specifies intentionally untracked files to ignore"
 msgstr "Especifica de forma intencional archivos sin seguimiento a ignorar"
 
-#: command-list.h:206
+#: command-list.h:207
 msgid "Defining submodule properties"
 msgstr "Definiendo las propiedades del submódulo"
 
-#: command-list.h:207
+#: command-list.h:208
 msgid "Git namespaces"
 msgstr "Namespaces de Git"
 
-#: command-list.h:208
+#: command-list.h:209
 msgid "Git Repository Layout"
 msgstr "Disposición del repositorio Git"
 
-#: command-list.h:209
+#: command-list.h:210
 msgid "Specifying revisions and ranges for Git"
 msgstr "Especificando revisiones y rangos para Git"
 
-#: command-list.h:210
+#: command-list.h:211
 msgid "Mounting one repository inside another"
 msgstr "Montando un repositorio dentro de otro"
 
-#: command-list.h:211
+#: command-list.h:212
 msgid "A tutorial introduction to Git: part two"
 msgstr "Un tutorial de introducción a Git: parte dos"
 
-#: command-list.h:212
+#: command-list.h:213
 msgid "A tutorial introduction to Git"
 msgstr "Un tutorial de introducción para Git"
 
-#: command-list.h:213
+#: command-list.h:214
 msgid "An overview of recommended workflows with Git"
 msgstr "Una visión general de flujos de trabajo recomendados con Git"
 
@@ -23765,26 +24020,26 @@
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Falló al recurrir en la ruta de submódulo '$displaypath'"
 
-#: git-submodule.sh:878
+#: git-submodule.sh:852
 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"
 
-#: git-submodule.sh:930
+#: git-submodule.sh:904
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "modo $mod_dst inesperado"
 
-#: git-submodule.sh:950
+#: git-submodule.sh:924
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr "  Advertencia: $display_name no contiene el commit $sha1_src"
 
-#: git-submodule.sh:953
+#: git-submodule.sh:927
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr "  Advertencia: $display_name no contiene el commit $sha1_dst"
 
-#: git-submodule.sh:956
+#: git-submodule.sh:930
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -24207,7 +24462,7 @@
 msgstr[0] "touch hecho a %d ruta\n"
 msgstr[1] "touch hecho a %d rutas\n"
 
-#: git-add--interactive.perl:1053
+#: git-add--interactive.perl:1055
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -24215,7 +24470,7 @@
 "Si el parche aplica limpiamente, el hunk editado sera marcado\n"
 "inmediatamente para el área de stage."
 
-#: git-add--interactive.perl:1056
+#: git-add--interactive.perl:1058
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -24223,7 +24478,7 @@
 "Si el parche aplica limpiamente, el hunk editado sera marcado\n"
 "inmediatamente para aplicar stash."
 
-#: git-add--interactive.perl:1059
+#: git-add--interactive.perl:1061
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -24231,8 +24486,8 @@
 "Si el parche aplica limpiamente, el hunk editado sera marcado\n"
 "inmediatamente para sacar del área de stage."
 
-#: git-add--interactive.perl:1062 git-add--interactive.perl:1071
-#: git-add--interactive.perl:1077
+#: git-add--interactive.perl:1064 git-add--interactive.perl:1073
+#: git-add--interactive.perl:1079
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -24240,8 +24495,8 @@
 "Si el parche aplica de forma limpia, el hunk editado sera marcado \n"
 "inmediatamente para aplicar."
 
-#: git-add--interactive.perl:1065 git-add--interactive.perl:1068
-#: git-add--interactive.perl:1074
+#: git-add--interactive.perl:1067 git-add--interactive.perl:1070
+#: git-add--interactive.perl:1076
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -24249,12 +24504,12 @@
 "Si el parche aplica de forma limpia, el hunk editado sera marcado\n"
 "inmediatamente para descarte."
 
-#: git-add--interactive.perl:1111
+#: git-add--interactive.perl:1113
 #, 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"
 
-#: git-add--interactive.perl:1118
+#: git-add--interactive.perl:1120
 #, perl-format
 msgid ""
 "---\n"
@@ -24267,12 +24522,12 @@
 "Para eliminar '%s' líneas, bórrelas.\n"
 "Lineas comenzando con  %s serán eliminadas.\n"
 
-#: git-add--interactive.perl:1140
+#: git-add--interactive.perl:1142
 #, 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"
 
-#: git-add--interactive.perl:1248
+#: git-add--interactive.perl:1250
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -24287,7 +24542,7 @@
 "d - no aplicar stage a este hunk o a ninguno de los posteriores en este "
 "archivo"
 
-#: git-add--interactive.perl:1254
+#: git-add--interactive.perl:1256
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -24301,7 +24556,7 @@
 "a - aplicar stash a este hunk y a todos los posteriores en el archivo\n"
 "d - no aplicar stash a este hunk o ninguno de los posteriores en el archivo"
 
-#: git-add--interactive.perl:1260
+#: git-add--interactive.perl:1262
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -24316,7 +24571,7 @@
 "d - no sacar del area de stage este hunk o ninguno de los posteriores en el "
 "archivo"
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1268
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -24330,7 +24585,7 @@
 "a - aplicar este hunk y todos los posteriores en el archivo\n"
 "d - no aplicar este hunko ninguno de los posteriores en el archivo"
 
-#: git-add--interactive.perl:1272 git-add--interactive.perl:1290
+#: git-add--interactive.perl:1274 git-add--interactive.perl:1292
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -24344,7 +24599,7 @@
 "a - descartar este hunk y todos los posteriores en este archivo\n"
 "d - no descartar este hunk o ninguno de los posteriores en el archivo"
 
-#: git-add--interactive.perl:1278
+#: git-add--interactive.perl:1280
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -24358,7 +24613,7 @@
 "a - descartar este hunk y todos los posteriores en este archivo\n"
 "d - no descartar este hunk o ninguno posterior en el archivo"
 
-#: git-add--interactive.perl:1284
+#: git-add--interactive.perl:1286
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -24372,7 +24627,7 @@
 "a - aplicar este hunk y todos los posteriores en el archivo\n"
 "d - no aplicar este hunk o ninguno de los siguientes en este archivo"
 
-#: git-add--interactive.perl:1296
+#: git-add--interactive.perl:1298
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -24386,7 +24641,7 @@
 "a - aplicar este hunk y todos los posteriores en el archivo\n"
 "d - no aplicar este hunk o ninguno de los siguientes en este archivo"
 
-#: git-add--interactive.perl:1311
+#: git-add--interactive.perl:1313
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -24408,85 +24663,90 @@
 "e - editar manualmente el hunk actual\n"
 "? - imprimir ayuda\n"
 
-#: git-add--interactive.perl:1342
+#: git-add--interactive.perl:1344
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "¡Los hunks seleccionados no aplican al índice!\n"
 
-#: git-add--interactive.perl:1357
+#: git-add--interactive.perl:1359
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "ignorando lo no fusionado: %s\n"
 
-#: git-add--interactive.perl:1468
+#: git-add--interactive.perl:1478
 #, 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,?]? "
 
-#: git-add--interactive.perl:1469
+#: git-add--interactive.perl:1479
 #, 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,?]? "
 
-#: git-add--interactive.perl:1470
+#: git-add--interactive.perl:1480
+#, perl-format
+msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
+msgstr "¿Aplicar adición al árbol de trabajo [y,n,q,a,d%s,?]? "
+
+#: git-add--interactive.perl:1481
 #, 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,?]? "
 
-#: git-add--interactive.perl:1570
+#: git-add--interactive.perl:1587
 msgid "No other hunks to goto\n"
 msgstr "No hay más pedazos para el ir\n"
 
-#: git-add--interactive.perl:1588
+#: git-add--interactive.perl:1605
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Numero inválido: '%s'\n"
 
-#: git-add--interactive.perl:1593
+#: git-add--interactive.perl:1610
 #, perl-format
 msgid "Sorry, only %d hunk available.\n"
 msgid_plural "Sorry, only %d hunks available.\n"
 msgstr[0] "Lo siento, solo %d hunk disponible.\n"
 msgstr[1] "Lo siento, solo %d hunks disponibles.\n"
 
-#: git-add--interactive.perl:1619
+#: git-add--interactive.perl:1636
 msgid "No other hunks to search\n"
 msgstr "No hay más pedazos para buscar\n"
 
-#: git-add--interactive.perl:1636
+#: git-add--interactive.perl:1653
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Regexp para la búsqueda mal formado %s: %s\n"
 
-#: git-add--interactive.perl:1646
+#: git-add--interactive.perl:1663
 msgid "No hunk matches the given pattern\n"
 msgstr "No hay hunks que concuerden con el patrón entregado.\n"
 
-#: git-add--interactive.perl:1658 git-add--interactive.perl:1680
+#: git-add--interactive.perl:1675 git-add--interactive.perl:1697
 msgid "No previous hunk\n"
 msgstr "No el anterior hunk\n"
 
-#: git-add--interactive.perl:1667 git-add--interactive.perl:1686
+#: git-add--interactive.perl:1684 git-add--interactive.perl:1703
 msgid "No next hunk\n"
 msgstr "No el siguiente hunk\n"
 
-#: git-add--interactive.perl:1692
+#: git-add--interactive.perl:1709
 msgid "Sorry, cannot split this hunk\n"
 msgstr "Perdón, no se puede dividir este pedazo\n"
 
-#: git-add--interactive.perl:1698
+#: git-add--interactive.perl:1715
 #, 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"
 
-#: git-add--interactive.perl:1708
+#: git-add--interactive.perl:1725
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "Perdón, no se puede editar este pedazo\n"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1773
+#: git-add--interactive.perl:1790
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -24506,19 +24766,19 @@
 "add untracked - agrega contenidos de archivos no rastreados al grupo de "
 "cambios del area de stage\n"
 
-#: git-add--interactive.perl:1790 git-add--interactive.perl:1795
-#: git-add--interactive.perl:1798 git-add--interactive.perl:1805
-#: git-add--interactive.perl:1808 git-add--interactive.perl:1815
-#: git-add--interactive.perl:1819 git-add--interactive.perl:1825
+#: git-add--interactive.perl:1807 git-add--interactive.perl:1812
+#: git-add--interactive.perl:1815 git-add--interactive.perl:1822
+#: git-add--interactive.perl:1825 git-add--interactive.perl:1832
+#: git-add--interactive.perl:1836 git-add--interactive.perl:1842
 msgid "missing --"
 msgstr "falta --"
 
-#: git-add--interactive.perl:1821
+#: git-add--interactive.perl:1838
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "modo --patch desconocido: %s"
 
-#: git-add--interactive.perl:1827 git-add--interactive.perl:1833
+#: git-add--interactive.perl:1844 git-add--interactive.perl:1850
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "argumento inválido %s, se esperaba --"
@@ -24835,61 +25095,91 @@
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Agregando para: %s de la línea '%s'\n"
 
-#: git-send-email.perl:1718
+#: git-send-email.perl:1722
 #, 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:1753
+#: git-send-email.perl:1757
 #, 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:1864
+#: git-send-email.perl:1868
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) no se pudo ejecutar '%s'"
 
-#: git-send-email.perl:1871
+#: git-send-email.perl:1875
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Agregando %s: %s de: '%s'\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1879
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) falló al cerrar el pipe para '%s'"
 
-#: git-send-email.perl:1905
+#: git-send-email.perl:1909
 msgid "cannot send message as 7bit"
 msgstr "no se puede mandar mensaje como 7bit"
 
-#: git-send-email.perl:1913
+#: git-send-email.perl:1917
 msgid "invalid transfer encoding"
 msgstr "codificación de transferencia inválida"
 
-#: git-send-email.perl:1954 git-send-email.perl:2006 git-send-email.perl:2016
+#: git-send-email.perl:1958 git-send-email.perl:2010 git-send-email.perl:2020
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "no es posible abrir %s: %s\n"
 
-#: git-send-email.perl:1957
+#: git-send-email.perl:1961
 #, 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"
 
-#: git-send-email.perl:1974
+#: git-send-email.perl:1978
 #, 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:1978
+#: git-send-email.perl:1982
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "¿Realmente deseas mandar %s?[y|N]: "
 
 #, 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"
diff --git a/po/fr.po b/po/fr.po
index b1b4144..d20fc44 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: 2020-05-27 07:23+0800\n"
-"PO-Revision-Date: 2020-05-27 11:04+0200\n"
+"POT-Creation-Date: 2020-07-10 09:53+0800\n"
+"PO-Revision-Date: 2020-07-12 18:00+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"
@@ -180,21 +180,21 @@
 msgid "ignoring unmerged: %s"
 msgstr "fichier non-fusionné ignoré : %s"
 
-#: add-interactive.c:929 add-patch.c:1675 git-add--interactive.perl:1366
+#: add-interactive.c:929 add-patch.c:1691 git-add--interactive.perl:1368
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Seuls des fichiers binaires ont changé.\n"
 
-#: add-interactive.c:931 add-patch.c:1673 git-add--interactive.perl:1368
+#: add-interactive.c:931 add-patch.c:1689 git-add--interactive.perl:1370
 #, c-format
 msgid "No changes.\n"
 msgstr "Aucune modification.\n"
 
-#: add-interactive.c:935 git-add--interactive.perl:1376
+#: add-interactive.c:935 git-add--interactive.perl:1378
 msgid "Patch update"
 msgstr "Mise à jour par patch"
 
-#: add-interactive.c:974 git-add--interactive.perl:1754
+#: add-interactive.c:974 git-add--interactive.perl:1771
 msgid "Review diff"
 msgstr "Réviser la différence"
 
@@ -265,11 +265,11 @@
 msgid "(empty) select nothing"
 msgstr "(vide) ne rien sélectionner"
 
-#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1851
+#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1868
 msgid "*** Commands ***"
 msgstr "*** Commandes ***"
 
-#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1848
+#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1865
 msgid "What now"
 msgstr "Et maintenant ?"
 
@@ -286,7 +286,7 @@
 #: builtin/merge.c:276 builtin/pull.c:190 builtin/submodule--helper.c:409
 #: builtin/submodule--helper.c:1394 builtin/submodule--helper.c:1397
 #: builtin/submodule--helper.c:1902 builtin/submodule--helper.c:1905
-#: builtin/submodule--helper.c:2148 bugreport.c:129
+#: builtin/submodule--helper.c:2148 bugreport.c:135
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "chemin"
@@ -295,27 +295,32 @@
 msgid "could not refresh index"
 msgstr "impossible de rafraîchir l'index"
 
-#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1765
+#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1782
 #, c-format
 msgid "Bye.\n"
 msgstr "Au revoir.\n"
 
-#: add-patch.c:34 git-add--interactive.perl:1428
+#: add-patch.c:34 git-add--interactive.perl:1430
 #, c-format, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "Indexer le changement de mode [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:35 git-add--interactive.perl:1429
+#: add-patch.c:35 git-add--interactive.perl:1431
 #, c-format, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "Indexer la suppression [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:36 git-add--interactive.perl:1430
+#: add-patch.c:36 git-add--interactive.perl:1432
+#, c-format, perl-format
+msgid "Stage addition [y,n,q,a,d%s,?]? "
+msgstr "Indexer l'ajout [y,n,q,a,d%s,?] ? "
+
+#: add-patch.c:37 git-add--interactive.perl:1433
 #, c-format, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Indexer cette section [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:38
+#: add-patch.c:39
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "staging."
@@ -323,7 +328,7 @@
 "Si le patch s'applique proprement, la section éditée sera immédiatement "
 "marquée comme indexée."
 
-#: add-patch.c:41
+#: add-patch.c:42
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -337,22 +342,27 @@
 "a - indexer cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas indexer cette section ni les suivantes de ce fichier\n"
 
-#: add-patch.c:55 git-add--interactive.perl:1433
+#: add-patch.c:56 git-add--interactive.perl:1436
 #, c-format, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "Remiser le changement de mode [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:56 git-add--interactive.perl:1434
+#: add-patch.c:57 git-add--interactive.perl:1437
 #, c-format, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "Remiser la suppression [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:57 git-add--interactive.perl:1435
+#: add-patch.c:58 git-add--interactive.perl:1438
+#, c-format, perl-format
+msgid "Stash addition [y,n,q,a,d%s,?]? "
+msgstr "Remiser l'ajout [y,n,q,a,d%s,?] ? "
+
+#: add-patch.c:59 git-add--interactive.perl:1439
 #, c-format, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "Remiser cette section [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:59
+#: add-patch.c:61
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "stashing."
@@ -360,7 +370,7 @@
 "Si le patch s'applique proprement, la section éditée sera immédiatement "
 "marquée comme remisée."
 
-#: add-patch.c:62
+#: add-patch.c:64
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -374,22 +384,27 @@
 "a - remiser cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas remiser cette section ni les suivantes de ce fichier\n"
 
-#: add-patch.c:78 git-add--interactive.perl:1438
+#: add-patch.c:80 git-add--interactive.perl:1442
 #, c-format, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr "Désindexer le changement de mode [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:79 git-add--interactive.perl:1439
+#: add-patch.c:81 git-add--interactive.perl:1443
 #, c-format, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "Désindexer la suppression [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:80 git-add--interactive.perl:1440
+#: add-patch.c:82 git-add--interactive.perl:1444
+#, c-format, perl-format
+msgid "Unstage addition [y,n,q,a,d%s,?]? "
+msgstr "Désindexer l'ajout [y,n,q,a,d%s,?] ? "
+
+#: add-patch.c:83 git-add--interactive.perl:1445
 #, c-format, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Désindexer cette section [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:82
+#: add-patch.c:85
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "unstaging."
@@ -397,7 +412,7 @@
 "Si le patch s'applique proprement, la section éditée sera immédiatement "
 "marquée comme desindexée."
 
-#: add-patch.c:85
+#: add-patch.c:88
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -411,22 +426,27 @@
 "a - désindexer cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas désindexer cette section ni les suivantes de ce fichier\n"
 
-#: add-patch.c:100 git-add--interactive.perl:1443
+#: add-patch.c:103 git-add--interactive.perl:1448
 #, c-format, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr "Appliquer le changement de mode à l'index [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:101 git-add--interactive.perl:1444
+#: add-patch.c:104 git-add--interactive.perl:1449
 #, c-format, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "Appliquer la suppression à l'index [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:102 git-add--interactive.perl:1445
+#: add-patch.c:105 git-add--interactive.perl:1450
+#, c-format, perl-format
+msgid "Apply addition to index [y,n,q,a,d%s,?]? "
+msgstr "Appliquer l'ajout à l'index [y,n,q,a,d%s,?] ? "
+
+#: add-patch.c:106 git-add--interactive.perl:1451
 #, c-format, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr "Appliquer cette section à l'index [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:104 add-patch.c:169 add-patch.c:212
+#: 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."
@@ -434,7 +454,7 @@
 "Si le patch s'applique proprement, la section éditée sera immédiatement "
 "marquée comme appliquée."
 
-#: add-patch.c:107
+#: add-patch.c:111
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -448,25 +468,31 @@
 "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:122 git-add--interactive.perl:1448
-#: git-add--interactive.perl:1463
+#: add-patch.c:126 git-add--interactive.perl:1454
+#: git-add--interactive.perl:1472
 #, 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:123 git-add--interactive.perl:1449
-#: git-add--interactive.perl:1464
+#: add-patch.c:127 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
 #, 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:124 git-add--interactive.perl:1450
-#: git-add--interactive.perl:1465
+#: add-patch.c:128 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
+#, 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:1457
+#: git-add--interactive.perl:1475
 #, 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:126 add-patch.c:148 add-patch.c:191
+#: 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."
@@ -474,7 +500,7 @@
 "Si le patch s'applique proprement, la section éditée sera immédiatement "
 "marquée comme éliminée."
 
-#: add-patch.c:129 add-patch.c:194
+#: add-patch.c:134 add-patch.c:202
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -488,24 +514,29 @@
 "a - supprimer cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas supprimer cette section ni les suivantes de ce fichier\n"
 
-#: add-patch.c:144 add-patch.c:187 git-add--interactive.perl:1453
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1460
 #, 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,?] ? "
 
-#: add-patch.c:145 add-patch.c:188 git-add--interactive.perl:1454
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1461
 #, c-format, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Abandonner la suppression de l'index et de l'arbre [y,n,q,a,d%s,?] ? "
 
-#: add-patch.c:146 add-patch.c:189 git-add--interactive.perl:1455
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1462
+#, c-format, perl-format
+msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Abandonner l'ajout de l'index et de l'arbre [y,n,q,a,d%s,?] ? "
+
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1463
 #, 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,?] ? "
 
-#: add-patch.c:151
+#: add-patch.c:157
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -519,27 +550,32 @@
 "a - éliminer cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas éliminer cette section ni les suivantes de ce fichier\n"
 
-#: add-patch.c:165 add-patch.c:208 git-add--interactive.perl:1458
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1466
 #, 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,?] ? "
 
-#: add-patch.c:166 add-patch.c:209 git-add--interactive.perl:1459
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1467
 #, 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,?] ? "
 
-#: add-patch.c:167 add-patch.c:210 git-add--interactive.perl:1460
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1468
+#, 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,?] ? "
+
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1469
 #, 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,?] ? "
 
-#: add-patch.c:172
+#: add-patch.c:179
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -553,7 +589,7 @@
 "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:215
+#: add-patch.c:224
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -567,34 +603,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:319
+#: add-patch.c:328
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "impossible d'analyser l'entête de section '%.*s'"
 
-#: add-patch.c:338 add-patch.c:342
+#: add-patch.c:347 add-patch.c:351
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "impossible d'analyser l'entête coloré de section '%.*s'"
 
-#: add-patch.c:396
+#: add-patch.c:405
 msgid "could not parse diff"
 msgstr "impossible d'analyser la diff"
 
-#: add-patch.c:415
+#: add-patch.c:424
 msgid "could not parse colored diff"
 msgstr "impossible d'analyser la diff colorée"
 
-#: add-patch.c:429
+#: add-patch.c:438
 #, c-format
 msgid "failed to run '%s'"
 msgstr "échec pour lancer '%s'"
 
-#: add-patch.c:588
+#: add-patch.c:602
 msgid "mismatched output from interactive.diffFilter"
 msgstr "sortie sans correspondance depuis interactive.diffFilter"
 
-#: add-patch.c:589
+#: add-patch.c:603
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -602,7 +638,7 @@
 "Votre filtre doit maintenir une correspondance un-pour-un\n"
 "entre les lignes en entrée et en sortie."
 
-#: add-patch.c:762
+#: add-patch.c:776
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -611,7 +647,7 @@
 "ligne de contexte attendue #%d dans\n"
 "%.*s"
 
-#: add-patch.c:777
+#: add-patch.c:791
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -624,12 +660,12 @@
 "\tne se termine pas par :\n"
 "%.*s"
 
-#: add-patch.c:1053 git-add--interactive.perl:1112
+#: add-patch.c:1067 git-add--interactive.perl:1114
 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"
 
-#: add-patch.c:1057
+#: add-patch.c:1071
 #, c-format
 msgid ""
 "---\n"
@@ -643,7 +679,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:1071 git-add--interactive.perl:1126
+#: add-patch.c:1085 git-add--interactive.perl:1128
 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"
@@ -653,11 +689,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:1104
+#: add-patch.c:1118
 msgid "could not parse hunk header"
 msgstr "impossible d'analyser l'entête de section"
 
-#: add-patch.c:1149
+#: add-patch.c:1163
 msgid "'git apply --cached' failed"
 msgstr "'git apply --cached' a échoué"
 
@@ -673,26 +709,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:1218 git-add--interactive.perl:1239
+#: add-patch.c:1232 git-add--interactive.perl:1241
 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:1261
+#: add-patch.c:1275
 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:1262 git-add--interactive.perl:1343
+#: add-patch.c:1276 git-add--interactive.perl:1345
 msgid "Apply them to the worktree anyway? "
 msgstr "Les appliquer quand même à l'arbre de travail ? "
 
-#: add-patch.c:1269 git-add--interactive.perl:1346
+#: add-patch.c:1283 git-add--interactive.perl:1348
 msgid "Nothing was applied.\n"
 msgstr "Rien n'a été appliqué.\n"
 
-#: add-patch.c:1326
+#: add-patch.c:1340
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -714,69 +750,69 @@
 "e - éditer manuellement la section actuelle\n"
 "? - afficher l'aide\n"
 
-#: add-patch.c:1447 add-patch.c:1457
+#: add-patch.c:1463 add-patch.c:1473
 msgid "No previous hunk"
 msgstr "Pas de section précédente"
 
-#: add-patch.c:1452 add-patch.c:1462
+#: add-patch.c:1468 add-patch.c:1478
 msgid "No next hunk"
 msgstr "Pas de section suivante"
 
-#: add-patch.c:1468
+#: add-patch.c:1484
 msgid "No other hunks to goto"
 msgstr "Aucune autre section à atteindre"
 
-#: add-patch.c:1479 git-add--interactive.perl:1577
+#: add-patch.c:1495 git-add--interactive.perl:1594
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "aller à quelle section (<ret> pour voir plus) ? "
 
-#: add-patch.c:1480 git-add--interactive.perl:1579
+#: add-patch.c:1496 git-add--interactive.perl:1596
 msgid "go to which hunk? "
 msgstr "aller à quelle section ? "
 
-#: add-patch.c:1491
+#: add-patch.c:1507
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Numéro invalide : '%s'"
 
-#: add-patch.c:1496
+#: add-patch.c:1512
 #, 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:1505
+#: add-patch.c:1521
 msgid "No other hunks to search"
 msgstr "aucune autre section à rechercher"
 
-#: add-patch.c:1511 git-add--interactive.perl:1623
+#: add-patch.c:1527 git-add--interactive.perl:1640
 msgid "search for regex? "
 msgstr "rechercher la regex ? "
 
-#: add-patch.c:1526
+#: add-patch.c:1542
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Regex de recherche malformée %s : %s"
 
-#: add-patch.c:1543
+#: add-patch.c:1559
 msgid "No hunk matches the given pattern"
 msgstr "Aucune section ne correspond au motif donné"
 
-#: add-patch.c:1550
+#: add-patch.c:1566
 msgid "Sorry, cannot split this hunk"
 msgstr "Désolé, impossible de découper cette section"
 
-#: add-patch.c:1554
+#: add-patch.c:1570
 #, c-format
 msgid "Split into %d hunks."
 msgstr "Découpée en %d sections."
 
-#: add-patch.c:1558
+#: add-patch.c:1574
 msgid "Sorry, cannot edit this hunk"
 msgstr "Désolé, impossible d'éditer cette section"
 
-#: add-patch.c:1609
+#: add-patch.c:1625
 msgid "'git apply' failed"
 msgstr "'git apply' a échoué"
 
@@ -785,7 +821,9 @@
 msgid ""
 "\n"
 "Disable this message with \"git config advice.%s false\""
-msgstr "\nDésactivez ce message avec \"git config advice.%s false\""
+msgstr ""
+"\n"
+"Désactivez ce message avec \"git config advice.%s false\""
 
 #: advice.c:156
 #, c-format
@@ -1478,7 +1516,7 @@
 
 #: apply.c:5008 builtin/am.c:2238 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3458 builtin/rebase.c:1332
+#: builtin/pack-objects.c:3530 builtin/rebase.c:1332
 msgid "action"
 msgstr "action"
 
@@ -1571,7 +1609,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:480 builtin/pack-objects.c:232 builtin/pack-objects.c:235
+#: archive-zip.c:480 builtin/pack-objects.c:243 builtin/pack-objects.c:246
 #, c-format
 msgid "deflate error (%d)"
 msgstr "erreur de compression (%d)"
@@ -1641,8 +1679,8 @@
 msgstr "préfixer chaque chemin de fichier dans l'archive"
 
 #: archive.c:467 builtin/blame.c:861 builtin/blame.c:865 builtin/blame.c:866
-#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1162
-#: builtin/fast-export.c:1164 builtin/fast-export.c:1168 builtin/grep.c:907
+#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1208
+#: builtin/fast-export.c:1210 builtin/fast-export.c:1214 builtin/grep.c:907
 #: 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
@@ -1869,10 +1907,10 @@
 "--reverse et --first-parent ensemble nécessitent la spécification d'un "
 "dernier commit"
 
-#: blame.c:2821 bundle.c:167 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
+#: blame.c:2821 bundle.c:187 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
 #: sequencer.c:4466 submodule.c:847 builtin/commit.c:1047 builtin/log.c:405
 #: builtin/log.c:1012 builtin/log.c:1541 builtin/log.c:1945 builtin/log.c:2235
-#: builtin/merge.c:415 builtin/pack-objects.c:3276 builtin/pack-objects.c:3291
+#: builtin/merge.c:415 builtin/pack-objects.c:3348 builtin/pack-objects.c:3363
 #: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr "échec de la préparation du parcours des révisions"
@@ -2042,84 +2080,88 @@
 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:36
+#: bundle.c:47
 #, c-format
 msgid "'%s' does not look like a v2 bundle file"
 msgstr "'%s' ne semble pas être un fichier bundle v2"
 
-#: bundle.c:64
+#: bundle.c:69
+msgid "unknown hash algorithm length"
+msgstr "longueur d'algorithme d'empreinte inconnue"
+
+#: bundle.c:84
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "en-tête non reconnu : %s%s (%d)"
 
-#: bundle.c:90 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
+#: bundle.c:110 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
 msgstr "impossible d'ouvrir '%s'"
 
-#: bundle.c:143
+#: bundle.c:163
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Le dépôt ne dispose pas des commits prérequis suivants :"
 
-#: bundle.c:146
+#: bundle.c:166
 msgid "need a repository to verify a bundle"
 msgstr "la vérification d'un colis requiert un dépôt"
 
-#: bundle.c:197
+#: bundle.c:217
 #, 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:204
+#: bundle.c:224
 msgid "The bundle records a complete history."
 msgstr "Le colis enregistre l'historique complet."
 
-#: bundle.c:206
+#: bundle.c:226
 #, 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:273
+#: bundle.c:293
 msgid "unable to dup bundle descriptor"
 msgstr "impossible de dupliquer le descripteur de liasse"
 
-#: bundle.c:280
+#: bundle.c:300
 msgid "Could not spawn pack-objects"
 msgstr "Impossible de créer des objets groupés"
 
-#: bundle.c:291
+#: bundle.c:311
 msgid "pack-objects died"
 msgstr "les objets groupés ont disparu"
 
-#: bundle.c:333
+#: bundle.c:353
 msgid "rev-list died"
 msgstr "rev-list a disparu"
 
-#: bundle.c:382
+#: bundle.c:402
 #, 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:461 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
+#: bundle.c:481 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "argument non reconnu : %s"
 
-#: bundle.c:469
+#: bundle.c:489
 msgid "Refusing to create empty bundle."
 msgstr "Refus de créer un colis vide."
 
-#: bundle.c:479
+#: bundle.c:499
 #, c-format
 msgid "cannot create '%s'"
 msgstr "impossible de créer '%s'"
 
-#: bundle.c:504
+#: bundle.c:524
 msgid "index-pack died"
 msgstr "l'index de groupe a disparu"
 
@@ -2128,271 +2170,263 @@
 msgid "invalid color value: %.*s"
 msgstr "Valeur invalide de couleur : %.*s"
 
-#: commit-graph.c:183
+#: commit-graph.c:238
 msgid "commit-graph file is too small"
 msgstr "le graphe de commit est trop petit"
 
-#: commit-graph.c:248
+#: commit-graph.c:303
 #, 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"
 
-#: commit-graph.c:255
+#: commit-graph.c:310
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "la version %X du graphe de commit ne correspond pas à la version %X"
 
-#: commit-graph.c:262
+#: commit-graph.c:317
 #, 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"
 
-#: commit-graph.c:284
+#: commit-graph.c:339
 msgid "commit-graph chunk lookup table entry missing; file may be incomplete"
 msgstr ""
 "entrée de table de consultation de morceaux de graphe de commite manquante ; "
 "le fichier est peut être incomplet"
 
-#: commit-graph.c:294
+#: commit-graph.c:349
 #, c-format
 msgid "commit-graph improper chunk offset %08x%08x"
 msgstr "décalage de bloc %08x%08x du graphe de commit inadéquat"
 
-#: commit-graph.c:362
+#: commit-graph.c:417
 #, 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"
 
-#: commit-graph.c:436
+#: commit-graph.c:491
 msgid "commit-graph has no base graphs chunk"
 msgstr "le graphe de commit n'a pas de section de graphes de base"
 
-#: commit-graph.c:446
+#: commit-graph.c:501
 msgid "commit-graph chain does not match"
 msgstr "la chaîne de graphe de commit ne correspond pas"
 
-#: commit-graph.c:494
+#: commit-graph.c:549
 #, 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"
 
-#: commit-graph.c:518
+#: commit-graph.c:573
 msgid "unable to find all commit-graph files"
 msgstr "impossible de trouver tous les fichiers du graphe de commit"
 
-#: commit-graph.c:651 commit-graph.c:711
+#: commit-graph.c:706 commit-graph.c:770
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr ""
 "position de commit invalide. Le graphe de commit est vraisemblablement "
 "corrompu"
 
-#: commit-graph.c:672
+#: commit-graph.c:727
 #, c-format
 msgid "could not find commit %s"
 msgstr "impossible de trouver le commit %s"
 
-#: commit-graph.c:948 builtin/am.c:1292
+#: commit-graph.c:1009 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "impossible d'analyser le commit %s"
 
-#: commit-graph.c:1096
+#: commit-graph.c:1157
 msgid "Writing changed paths Bloom filters index"
 msgstr "Écriture de l'index des filtres Bloom des chemins modifiés"
 
-#: commit-graph.c:1121
+#: commit-graph.c:1182
 msgid "Writing changed paths Bloom filters data"
 msgstr "Écriture des données des filtres Bloom des chemins modifiés"
 
-#: commit-graph.c:1160 builtin/pack-objects.c:2783
+#: commit-graph.c:1221 builtin/pack-objects.c:2832
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "impossible d'obtenir le type de l'objet %s"
 
-#: commit-graph.c:1196
+#: commit-graph.c:1257
 msgid "Loading known commits in commit graph"
 msgstr "Lecture des commits connus dans un graphe de commit"
 
-#: commit-graph.c:1213
+#: commit-graph.c:1274
 msgid "Expanding reachable commits in commit graph"
 msgstr "Expansion des commits joignables dans un graphe de commit"
 
-#: commit-graph.c:1233
+#: commit-graph.c:1294
 msgid "Clearing commit marks in commit graph"
 msgstr "Suppression les marques de commit dans le graphe de commits"
 
-#: commit-graph.c:1252
+#: commit-graph.c:1313
 msgid "Computing commit graph generation numbers"
 msgstr "Calcul des chiffres de génération du graphe de commits"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1367
 msgid "Computing commit changed paths Bloom filters"
 msgstr "Calcul des filtres Bloom des chemins modifiés du commit"
 
-#: commit-graph.c:1359
+#: commit-graph.c:1423
+msgid "Collecting referenced commits"
+msgstr "Collecte des commits référencés"
+
+#: commit-graph.c:1447
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "Recherche de commits pour un graphe de commits dans %d paquet"
 msgstr[1] "Recherche de commits pour un graphe de commits dans %d paquets"
 
-#: commit-graph.c:1372
+#: commit-graph.c:1460
 #, c-format
 msgid "error adding pack %s"
 msgstr "erreur à l'ajout du packet %s"
 
-#: commit-graph.c:1376
+#: commit-graph.c:1464
 #, c-format
 msgid "error opening index for %s"
 msgstr "erreur à l'ouverture de l'index pour %s"
 
-#: commit-graph.c:1405
-#, c-format
-msgid "Finding commits for commit graph from %d ref"
-msgid_plural "Finding commits for commit graph from %d refs"
-msgstr[0] "Recherche de commits pour un graphe de commits depuis %d réf"
-msgstr[1] "Recherche de commits pour un graphe de commits depuis %d réfs"
-
-#: commit-graph.c:1426
-#, c-format
-msgid "invalid commit object id: %s"
-msgstr "identifiant d'objet commit invalide : %s"
-
-#: commit-graph.c:1442
+#: commit-graph.c:1503
 msgid "Finding commits for commit graph among packed objects"
 msgstr ""
 "Recherche de commits pour un graphe de commits parmi les objets empaquetés"
 
-#: commit-graph.c:1457
+#: commit-graph.c:1518
 msgid "Counting distinct commits in commit graph"
 msgstr "Comptage des commits distincts dans un graphe de commit"
 
-#: commit-graph.c:1489
+#: commit-graph.c:1550
 msgid "Finding extra edges in commit graph"
 msgstr "Recherche d'arêtes supplémentaires dans un graphe de commits"
 
-#: commit-graph.c:1538
+#: commit-graph.c:1599
 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:1572 midx.c:812
+#: commit-graph.c:1633 midx.c:812
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "impossible de créer les répertoires de premier niveau de %s"
 
-#: commit-graph.c:1585
+#: commit-graph.c:1646
 msgid "unable to create temporary graph layer"
 msgstr "impossible de créer une couche de graphe temporaire"
 
-#: commit-graph.c:1590
+#: commit-graph.c:1651
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "impossible de régler les droits partagés pour '%s'"
 
-#: commit-graph.c:1667
+#: commit-graph.c:1728
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "Écriture le graphe de commits en %d passe"
 msgstr[1] "Écriture le graphe de commits en %d passes"
 
-#: commit-graph.c:1712
+#: commit-graph.c:1773
 msgid "unable to open commit-graph chain file"
 msgstr "impossible d'ouvrir le fichier de graphe de commit"
 
-#: commit-graph.c:1728
+#: commit-graph.c:1789
 msgid "failed to rename base commit-graph file"
 msgstr "échec du renommage du fichier de graphe de commits"
 
-#: commit-graph.c:1748
+#: commit-graph.c:1809
 msgid "failed to rename temporary commit-graph file"
 msgstr "impossible de renommer le fichier temporaire de graphe de commits"
 
-#: commit-graph.c:1874
+#: commit-graph.c:1935
 msgid "Scanning merged commits"
 msgstr "Analyse des commits de fusion"
 
-#: commit-graph.c:1885
+#: commit-graph.c:1946
 #, c-format
 msgid "unexpected duplicate commit id %s"
 msgstr "id de commit %s dupliqué inattendu"
 
-#: commit-graph.c:1908
+#: commit-graph.c:1969
 msgid "Merging commit-graph"
 msgstr "fusion du graphe de commits"
 
-#: commit-graph.c:2096
+#: commit-graph.c:2156
 #, c-format
 msgid "the commit graph format cannot write %d commits"
 msgstr "le graphe de commits ne peut pas écrire %d commits"
 
-#: commit-graph.c:2107
+#: commit-graph.c:2167
 msgid "too many commits to write graph"
 msgstr "trop de commits pour écrire un graphe"
 
-#: commit-graph.c:2200
+#: commit-graph.c:2260
 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"
 
-#: commit-graph.c:2210
+#: commit-graph.c:2270
 #, 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:2220 commit-graph.c:2235
+#: commit-graph.c:2280 commit-graph.c:2295
 #, 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"
 
-#: commit-graph.c:2227
+#: commit-graph.c:2287
 #, 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:2245
+#: commit-graph.c:2305
 msgid "Verifying commits in commit graph"
 msgstr "Verification des commits dans le graphe de commits"
 
-#: commit-graph.c:2259
+#: commit-graph.c:2320
 #, 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"
 
-#: commit-graph.c:2266
+#: commit-graph.c:2327
 #, 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"
 
-#: commit-graph.c:2276
+#: commit-graph.c:2337
 #, 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"
 
-#: commit-graph.c:2285
+#: commit-graph.c:2346
 #, 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:2298
+#: commit-graph.c:2360
 #, 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"
 
-#: commit-graph.c:2303
+#: commit-graph.c:2365
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2400,7 +2434,7 @@
 "le graphe de commit a un numéro de génération nul pour le commit %s, mais "
 "non-nul ailleurs"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2369
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2408,12 +2442,12 @@
 "le graphe de commit a un numéro de génération non-nul pour le commit %s, "
 "mais nul ailleurs"
 
-#: commit-graph.c:2322
+#: commit-graph.c:2385
 #, c-format
 msgid "commit-graph generation for commit %s is %u != %u"
 msgstr "la génération du graphe de commit pour le commit %s est %u != %u"
 
-#: commit-graph.c:2328
+#: commit-graph.c:2391
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
@@ -2451,27 +2485,27 @@
 "Supprimez ce message en lançant\n"
 "\"git config advice.graftFileDeprecated false\""
 
-#: commit.c:1168
+#: commit.c:1172
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr "La validation %s a une signature GPG non fiable, prétendument par %s."
 
-#: commit.c:1172
+#: commit.c:1176
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "La validation %s a une mauvaise signature GPG prétendument par %s."
 
-#: commit.c:1175
+#: commit.c:1179
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "La validation %s n'a pas de signature GPG."
 
-#: commit.c:1178
+#: commit.c:1182
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "La validation %s a une signature GPG correcte par %s\n"
 
-#: commit.c:1432
+#: commit.c:1436
 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"
@@ -2674,7 +2708,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "doit être parmi nothing, matching, simple, upstream ou current"
 
-#: config.c:1533 builtin/pack-objects.c:3542
+#: config.c:1533 builtin/pack-objects.c:3617
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "niveau de compression du paquet %d"
@@ -2827,72 +2861,81 @@
 msgid "server doesn't support '%s'"
 msgstr "Le serveur ne supporte pas '%s'"
 
-#: connect.c:103
+#: connect.c:118
 #, c-format
 msgid "server doesn't support feature '%s'"
 msgstr "Le serveur ne supporte pas la fonctionnalité '%s'"
 
-#: connect.c:114
+#: connect.c:129
 msgid "expected flush after capabilities"
 msgstr "vidage attendu après les capacités"
 
-#: connect.c:233
+#: connect.c:263
 #, c-format
 msgid "ignoring capabilities after first line '%s'"
 msgstr "capacités ignorées après la première ligne '%s'"
 
-#: connect.c:252
+#: connect.c:284
 msgid "protocol error: unexpected capabilities^{}"
 msgstr "erreur de protocole : capabilities^{} inattendu"
 
-#: connect.c:273
+#: connect.c:306
 #, c-format
 msgid "protocol error: expected shallow sha-1, got '%s'"
 msgstr "erreur de protocole : shallow sha-1 attendu, '%s' trouvé"
 
-#: connect.c:275
+#: connect.c:308
 msgid "repository on the other end cannot be shallow"
 msgstr "le dépôt distant ne peut pas être superficiel"
 
-#: connect.c:313
+#: connect.c:347
 msgid "invalid packet"
 msgstr "paquet invalide"
 
-#: connect.c:333
+#: connect.c:367
 #, c-format
 msgid "protocol error: unexpected '%s'"
 msgstr "erreur de protocole : '%s' attendu"
 
-#: connect.c:441
+#: connect.c:473
+#, c-format
+msgid "unknown object format '%s' specified by server"
+msgstr "format d'objet spécifié par le serveur inconnu '%s'"
+
+#: connect.c:500
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "réponse à ls-ref invalide : %s"
 
-#: connect.c:445
+#: connect.c:504
 msgid "expected flush after ref listing"
 msgstr "vidage attendu après le listage de références"
 
-#: connect.c:544
+#: connect.c:507
+msgid "expected response end packet after ref listing"
+msgstr "paquet de fin de réponse attendu après le listage de références"
+
+#: connect.c:640
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "le protocole '%s' n'est pas supporté"
 
-#: connect.c:595
+#: connect.c:691
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "impossible de positionner SO_KEEPALIVE sur la socket"
 
-#: connect.c:635 connect.c:698
+#: connect.c:731 connect.c:794
 #, c-format
 msgid "Looking up %s ... "
 msgstr "Recherche de %s… "
 
-#: connect.c:639
+#: connect.c:735
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "impossible de rechercher %s (port %s) (%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:643 connect.c:714
+#: connect.c:739 connect.c:810
 #, c-format
 msgid ""
 "done.\n"
@@ -2901,7 +2944,7 @@
 "fait.\n"
 "Connexion à %s (port %s)… "
 
-#: connect.c:665 connect.c:742
+#: connect.c:761 connect.c:838
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2911,75 +2954,75 @@
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:671 connect.c:748
+#: connect.c:767 connect.c:844
 msgid "done."
 msgstr "fait."
 
-#: connect.c:702
+#: connect.c:798
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "impossible de rechercher %s (%s)"
 
-#: connect.c:708
+#: connect.c:804
 #, c-format
 msgid "unknown port %s"
 msgstr "port inconnu %s"
 
-#: connect.c:845 connect.c:1175
+#: connect.c:941 connect.c:1271
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "nom d'hôte étrange '%s' bloqué"
 
-#: connect.c:847
+#: connect.c:943
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "port étrange '%s' bloqué"
 
-#: connect.c:857
+#: connect.c:953
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "impossible de démarrer un proxy %s"
 
-#: connect.c:928
+#: connect.c:1024
 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"
 
-#: connect.c:1123
+#: connect.c:1219
 msgid "ssh variant 'simple' does not support -4"
 msgstr "la variante ssh 'simple' ne supporte pas -4"
 
-#: connect.c:1135
+#: connect.c:1231
 msgid "ssh variant 'simple' does not support -6"
 msgstr "la variante ssh 'simple' ne supporte pas -6"
 
-#: connect.c:1152
+#: connect.c:1248
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "la variante ssh 'simple' ne supporte pas de spécifier le port"
 
-#: connect.c:1264
+#: connect.c:1360
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "chemin étrange '%s' bloqué"
 
-#: connect.c:1311
+#: connect.c:1407
 msgid "unable to fork"
 msgstr "fork impossible"
 
-#: connected.c:107 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:109 builtin/fsck.c:209 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Vérification de la connectivité"
 
-#: connected.c:119
+#: connected.c:121
 msgid "Could not run 'git rev-list'"
 msgstr "Impossible de lancer 'git rev-list'"
 
-#: connected.c:139
+#: connected.c:141
 msgid "failed write to rev-list"
 msgstr "impossible d'écrire dans la rev-list"
 
-#: connected.c:146
+#: connected.c:148
 msgid "failed to close rev-list's stdin"
 msgstr "impossible de fermer l'entrée standard du rev-list"
 
@@ -3116,7 +3159,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"
@@ -3124,7 +3169,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:396
 #, c-format
@@ -3247,18 +3293,18 @@
 "Pas un dépôt git. Utilisez --no-index pour comparer deux chemins hors d'un "
 "arbre de travail"
 
-#: diff.c:155
+#: 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"
 
-#: diff.c:160
+#: diff.c:161
 #, c-format
 msgid "  Unknown dirstat parameter '%s'\n"
 msgstr "  Paramètre dirstat inconnu '%s'\n"
 
-#: diff.c:296
+#: diff.c:297
 msgid ""
 "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
 "'dimmed-zebra', 'plain'"
@@ -3266,7 +3312,7 @@
 "le paramètre de couleur de déplacement doit être parmi 'no', 'default', "
 "'blocks', 'zebra', 'dimmed_zebra' ou 'plain'"
 
-#: diff.c:324
+#: diff.c:325
 #, c-format
 msgid ""
 "unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', "
@@ -3276,7 +3322,7 @@
 "space-change', 'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-"
 "change'"
 
-#: diff.c:332
+#: diff.c:333
 msgid ""
 "color-moved-ws: allow-indentation-change cannot be combined with other "
 "whitespace modes"
@@ -3284,13 +3330,13 @@
 "color-moved-ws : allow-indentation-change ne peut pas être combiné avec "
 "d'autres modes d'espace"
 
-#: diff.c:405
+#: 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'"
 
-#: diff.c:465
+#: diff.c:470
 #, c-format
 msgid ""
 "Found errors in 'diff.dirstat' config variable:\n"
@@ -3299,35 +3345,35 @@
 "Erreurs dans la variable de configuration 'diff.dirstat' :\n"
 "%s"
 
-#: diff.c:4238
+#: diff.c:4243
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "l'application de diff externe a disparu, arrêt à %s"
 
-#: diff.c:4583
+#: diff.c:4589
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check et -s sont mutuellement exclusifs"
 
-#: diff.c:4586
+#: diff.c:4592
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S et --find-object sont mutuellement exclusifs"
 
-#: diff.c:4664
+#: diff.c:4670
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow a besoin d'une spécification de chemin unique"
 
-#: diff.c:4712
+#: diff.c:4718
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "valeur invalide de --stat : %s"
 
-#: diff.c:4717 diff.c:4722 diff.c:4727 diff.c:4732 diff.c:5245
+#: diff.c:4723 diff.c:4728 diff.c:4733 diff.c:4738 diff.c:5250
 #: parse-options.c:197 parse-options.c:201
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s attend une valeur numérique"
 
-#: diff.c:4749
+#: diff.c:4755
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3336,42 +3382,42 @@
 "Impossible d'analyser le paramètre de l'option --dirstat/-X :\n"
 "%s"
 
-#: diff.c:4834
+#: diff.c:4840
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "classe de modification inconnue '%c' dans --diff-fileter=%s"
 
-#: diff.c:4858
+#: diff.c:4864
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "valeur inconnue après ws-error-highlight=%.*s"
 
-#: diff.c:4872
+#: diff.c:4878
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "impossible de résoudre '%s'"
 
-#: diff.c:4922 diff.c:4928
+#: diff.c:4928 diff.c:4934
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "forme <n>/<m> attendue par %s"
 
-#: diff.c:4940
+#: diff.c:4946
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "caractère attendu par %s, '%s' trouvé"
 
-#: diff.c:4961
+#: diff.c:4967
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "mauvais argument --color-moved : %s"
 
-#: diff.c:4980
+#: diff.c:4986
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "mode invalide '%s' dans --color-moved-ws"
 
-#: diff.c:5020
+#: diff.c:5026
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3379,155 +3425,155 @@
 "l'option diff-algorithm accept \"myers\", \"minimal\", \"patience\" et "
 "\"histogram\""
 
-#: diff.c:5056 diff.c:5076
+#: diff.c:5062 diff.c:5082
 #, c-format
 msgid "invalid argument to %s"
 msgstr "argument invalide pour %s"
 
-#: diff.c:5214
+#: diff.c:5219
 #, 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:5270
+#: diff.c:5275
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "mauvais argument pour --word-diff : %s"
 
-#: diff.c:5293
+#: diff.c:5298
 msgid "Diff output format options"
 msgstr "Options de format de sortie de diff"
 
-#: diff.c:5295 diff.c:5301
+#: diff.c:5300 diff.c:5306
 msgid "generate patch"
 msgstr "générer la rustine"
 
-#: diff.c:5298 builtin/log.c:177
+#: diff.c:5303 builtin/log.c:177
 msgid "suppress diff output"
 msgstr "supprimer la sortie des différences"
 
-#: diff.c:5303 diff.c:5417 diff.c:5424
+#: diff.c:5308 diff.c:5422 diff.c:5429
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5304 diff.c:5307
+#: diff.c:5309 diff.c:5312
 msgid "generate diffs with <n> lines context"
 msgstr "générer les diffs avec <n> lignes de contexte"
 
-#: diff.c:5309
+#: diff.c:5314
 msgid "generate the diff in raw format"
 msgstr "générer le diff en format brut"
 
-#: diff.c:5312
+#: diff.c:5317
 msgid "synonym for '-p --raw'"
 msgstr "synonyme de '-p --raw'"
 
-#: diff.c:5316
+#: diff.c:5321
 msgid "synonym for '-p --stat'"
 msgstr "synonyme de '-p --stat'"
 
-#: diff.c:5320
+#: diff.c:5325
 msgid "machine friendly --stat"
 msgstr "--stat pour traitement automatique"
 
-#: diff.c:5323
+#: diff.c:5328
 msgid "output only the last line of --stat"
 msgstr "afficher seulement la dernière ligne de --stat"
 
-#: diff.c:5325 diff.c:5333
+#: diff.c:5330 diff.c:5338
 msgid "<param1,param2>..."
 msgstr "<param1,param2>..."
 
-#: diff.c:5326
+#: diff.c:5331
 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:5330
+#: diff.c:5335
 msgid "synonym for --dirstat=cumulative"
 msgstr "synonyme pour --dirstat=cumulative"
 
-#: diff.c:5334
+#: diff.c:5339
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "synonyme pour --dirstat=files,param1,param2..."
 
-#: diff.c:5338
+#: diff.c:5343
 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"
 
-#: diff.c:5341
+#: diff.c:5346
 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"
 
-#: diff.c:5344
+#: diff.c:5349
 msgid "show only names of changed files"
 msgstr "n'afficher que les noms de fichiers modifiés"
 
-#: diff.c:5347
+#: diff.c:5352
 msgid "show only names and status of changed files"
 msgstr "n'afficher que les noms et les status des fichiers modifiés"
 
-#: diff.c:5349
+#: diff.c:5354
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<largeur>[,<largeur-de-nom>[,<compte>]]"
 
-#: diff.c:5350
+#: diff.c:5355
 msgid "generate diffstat"
 msgstr "générer un diffstat"
 
-#: diff.c:5352 diff.c:5355 diff.c:5358
+#: diff.c:5357 diff.c:5360 diff.c:5363
 msgid "<width>"
 msgstr "<largeur>"
 
-#: diff.c:5353
+#: diff.c:5358
 msgid "generate diffstat with a given width"
 msgstr "générer un diffstat avec la largeur indiquée"
 
-#: diff.c:5356
+#: diff.c:5361
 msgid "generate diffstat with a given name width"
 msgstr "génerer un diffstat avec la largeur de nom indiquée"
 
-#: diff.c:5359
+#: diff.c:5364
 msgid "generate diffstat with a given graph width"
 msgstr "génerer un diffstat avec la largeur de graphe indiquée"
 
-#: diff.c:5361
+#: diff.c:5366
 msgid "<count>"
 msgstr "<compte>"
 
-#: diff.c:5362
+#: diff.c:5367
 msgid "generate diffstat with limited lines"
 msgstr "générer un diffstat avec des lignes limitées"
 
-#: diff.c:5365
+#: diff.c:5370
 msgid "generate compact summary in diffstat"
 msgstr "générer une résumé compact dans le diffstat"
 
-#: diff.c:5368
+#: diff.c:5373
 msgid "output a binary diff that can be applied"
 msgstr "produire un diff binaire qui peut être appliqué"
 
-#: diff.c:5371
+#: diff.c:5376
 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\""
 
-#: diff.c:5373
+#: diff.c:5378
 msgid "show colored diff"
 msgstr "afficher un diff coloré"
 
-#: diff.c:5374
+#: diff.c:5379
 msgid "<kind>"
 msgstr "<sorte>"
 
-#: diff.c:5375
+#: diff.c:5380
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3535,7 +3581,7 @@
 "surligner les erreurs d'espace dans les lignes 'contexte', 'ancien', "
 "'nouveau' dans le diff"
 
-#: diff.c:5378
+#: diff.c:5383
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3543,93 +3589,93 @@
 "ne pas compresser les chemins et utiliser des NULs comme terminateurs de "
 "champs dans --raw ou --numstat"
 
-#: diff.c:5381 diff.c:5384 diff.c:5387 diff.c:5493
+#: diff.c:5386 diff.c:5389 diff.c:5392 diff.c:5498
 msgid "<prefix>"
 msgstr "<préfixe>"
 
-#: diff.c:5382
+#: diff.c:5387
 msgid "show the given source prefix instead of \"a/\""
 msgstr "afficher le préfixe de source indiqué au lieu de \"a/\""
 
-#: diff.c:5385
+#: diff.c:5390
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "afficher le préfixe de destination indiqué au lieu de \"b/\""
 
-#: diff.c:5388
+#: diff.c:5393
 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:5391
+#: diff.c:5396
 msgid "do not show any source or destination prefix"
 msgstr "n'afficher aucun préfixe, ni de source, ni de destination"
 
-#: diff.c:5394
+#: diff.c:5399
 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é"
 
-#: diff.c:5398 diff.c:5403 diff.c:5408
+#: diff.c:5403 diff.c:5408 diff.c:5413
 msgid "<char>"
 msgstr "<caractère>"
 
-#: diff.c:5399
+#: diff.c:5404
 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:5404
+#: diff.c:5409
 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:5409
+#: diff.c:5414
 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 ' '"
 
-#: diff.c:5412
+#: diff.c:5417
 msgid "Diff rename options"
 msgstr "Options de renommage de diff"
 
-#: diff.c:5413
+#: diff.c:5418
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5414
+#: diff.c:5419
 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"
 
-#: diff.c:5418
+#: diff.c:5423
 msgid "detect renames"
 msgstr "détecter les renommages"
 
-#: diff.c:5422
+#: diff.c:5427
 msgid "omit the preimage for deletes"
 msgstr "supprimer la pré-image pour les suppressions"
 
-#: diff.c:5425
+#: diff.c:5430
 msgid "detect copies"
 msgstr "détecter les copies"
 
-#: diff.c:5429
+#: diff.c:5434
 msgid "use unmodified files as source to find copies"
 msgstr ""
 "utiliser les fichiers non-modifiés comme sources pour trouver des copies"
 
-#: diff.c:5431
+#: diff.c:5436
 msgid "disable rename detection"
 msgstr "désactiver la détection de renommage"
 
-#: diff.c:5434
+#: diff.c:5439
 msgid "use empty blobs as rename source"
 msgstr "utiliser des blobs vides comme source de renommage"
 
-#: diff.c:5436
+#: diff.c:5441
 msgid "continue listing the history of a file beyond renames"
 msgstr "continuer à afficher l'historique d'un fichier au delà des renommages"
 
-#: diff.c:5439
+#: diff.c:5444
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3637,161 +3683,161 @@
 "empêcher la détection de renommage/copie si le nombre de cibles de renommage/"
 "copie excède la limite indiquée"
 
-#: diff.c:5441
+#: diff.c:5446
 msgid "Diff algorithm options"
 msgstr "Options de l'algorithme de diff"
 
-#: diff.c:5443
+#: diff.c:5448
 msgid "produce the smallest possible diff"
 msgstr "produire le diff le plus petit possible"
 
-#: diff.c:5446
+#: diff.c:5451
 msgid "ignore whitespace when comparing lines"
 msgstr "ignorer les espaces lors de la comparaison de ligne"
 
-#: diff.c:5449
+#: diff.c:5454
 msgid "ignore changes in amount of whitespace"
 msgstr "ignorer des modifications du nombre d'espaces"
 
-#: diff.c:5452
+#: diff.c:5457
 msgid "ignore changes in whitespace at EOL"
 msgstr "ignorer des modifications d'espace en fin de ligne"
 
-#: diff.c:5455
+#: diff.c:5460
 msgid "ignore carrier-return at the end of line"
 msgstr "ignore le retour chariot en fin de ligne"
 
-#: diff.c:5458
+#: diff.c:5463
 msgid "ignore changes whose lines are all blank"
 msgstr "ignorer les modifications dont les lignes sont vides"
 
-#: diff.c:5461
+#: diff.c:5466
 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"
 
-#: diff.c:5464
+#: diff.c:5469
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "générer un diff en utilisant l'algorithme de différence \"patience\""
 
-#: diff.c:5468
+#: diff.c:5473
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr ""
 "générer un diff en utilisant l'algorithme de différence \"histogramme\""
 
-#: diff.c:5470
+#: diff.c:5475
 msgid "<algorithm>"
 msgstr "<algorithme>"
 
-#: diff.c:5471
+#: diff.c:5476
 msgid "choose a diff algorithm"
 msgstr "choisir un algorithme de différence"
 
-#: diff.c:5473
+#: diff.c:5478
 msgid "<text>"
 msgstr "<texte>"
 
-#: diff.c:5474
+#: diff.c:5479
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "générer un diff en utilisant l'algorithme de différence \"ancré\""
 
-#: diff.c:5476 diff.c:5485 diff.c:5488
+#: diff.c:5481 diff.c:5490 diff.c:5493
 msgid "<mode>"
 msgstr "<mode>"
 
-#: diff.c:5477
+#: diff.c:5482
 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"
 
-#: diff.c:5479 diff.c:5482 diff.c:5527
+#: diff.c:5484 diff.c:5487 diff.c:5532
 msgid "<regex>"
 msgstr "<regex>"
 
-#: diff.c:5480
+#: diff.c:5485
 msgid "use <regex> to decide what a word is"
 msgstr "utiliser <regex> pour décider ce qu'est un mot"
 
-#: diff.c:5483
+#: diff.c:5488
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "équivalent à --word-diff=color --word-diff-regex=<regex>"
 
-#: diff.c:5486
+#: diff.c:5491
 msgid "moved lines of code are colored differently"
 msgstr "les lignes déplacées sont colorées différemment"
 
-#: diff.c:5489
+#: diff.c:5494
 msgid "how white spaces are ignored in --color-moved"
 msgstr "comment les espaces sont ignorés dans --color-moved"
 
-#: diff.c:5492
+#: diff.c:5497
 msgid "Other diff options"
 msgstr "Autres options diff"
 
-#: diff.c:5494
+#: diff.c:5499
 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"
 
-#: diff.c:5498
+#: diff.c:5503
 msgid "treat all files as text"
 msgstr "traiter les fichiers comme texte"
 
-#: diff.c:5500
+#: diff.c:5505
 msgid "swap two inputs, reverse the diff"
 msgstr "échanger les entrées, inverser le diff"
 
-#: diff.c:5502
+#: diff.c:5507
 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:5504
+#: diff.c:5509
 msgid "disable all output of the program"
 msgstr "désactiver tous les affichages du programme"
 
-#: diff.c:5506
+#: diff.c:5511
 msgid "allow an external diff helper to be executed"
 msgstr "autoriser l'exécution d'un assistant externe de diff"
 
-#: diff.c:5508
+#: diff.c:5513
 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"
 
-#: diff.c:5510
+#: diff.c:5515
 msgid "<when>"
 msgstr "<quand>"
 
-#: diff.c:5511
+#: diff.c:5516
 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"
 
-#: diff.c:5514
+#: diff.c:5519
 msgid "<format>"
 msgstr "<format>"
 
-#: diff.c:5515
+#: diff.c:5520
 msgid "specify how differences in submodules are shown"
 msgstr "spécifier comment les différences dans les sous-modules sont affichées"
 
-#: diff.c:5519
+#: diff.c:5524
 msgid "hide 'git add -N' entries from the index"
 msgstr "masquer les entrées 'git add -N' de l'index"
 
-#: diff.c:5522
+#: diff.c:5527
 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:5524
+#: diff.c:5529
 msgid "<string>"
 msgstr "<chaîne>"
 
-#: diff.c:5525
+#: diff.c:5530
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
@@ -3799,7 +3845,7 @@
 "rechercher les différences qui modifient le nombre d'occurrences de la "
 "chaîne spécifiée"
 
-#: diff.c:5528
+#: diff.c:5533
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3807,26 +3853,26 @@
 "rechercher les différences qui modifient le nombre d'occurrences de la regex "
 "spécifiée"
 
-#: diff.c:5531
+#: diff.c:5536
 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"
 
-#: diff.c:5534
+#: diff.c:5539
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr ""
 "traiter <chaîne> dans -S comme une expression rationnelle POSIX étendue"
 
-#: diff.c:5537
+#: diff.c:5542
 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:5538
+#: diff.c:5543
 msgid "<object-id>"
 msgstr "<id-objet>"
 
-#: diff.c:5539
+#: diff.c:5544
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
@@ -3834,35 +3880,35 @@
 "rechercher les différences qui modifient le nombre d'occurrences de l'objet "
 "indiqué"
 
-#: diff.c:5541
+#: diff.c:5546
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5542
+#: diff.c:5547
 msgid "select files by diff type"
 msgstr "sélectionner les fichiers par types de diff"
 
-#: diff.c:5544
+#: diff.c:5549
 msgid "<file>"
 msgstr "<fichier>"
 
-#: diff.c:5545
+#: diff.c:5550
 msgid "Output to a specific file"
 msgstr "Sortie vers un fichier spécifié"
 
-#: diff.c:6200
+#: diff.c:6205
 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:6203
+#: diff.c:6208
 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."
 
-#: diff.c:6206
+#: diff.c:6211
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3879,62 +3925,62 @@
 msgid "Performing inexact rename detection"
 msgstr "Détection de renommage inexact en cours"
 
-#: dir.c:555
+#: dir.c:573
 #, 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"
 
-#: dir.c:695 dir.c:724 dir.c:737
+#: dir.c:713 dir.c:742 dir.c:755
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "motif non reconnu : '%s'"
 
-#: dir.c:754 dir.c:768
+#: dir.c:772 dir.c:786
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "motif négatif non reconnu : '%s'"
 
-#: dir.c:786
+#: dir.c:804
 #, 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é"
 
-#: dir.c:796
+#: dir.c:814
 msgid "disabling cone pattern matching"
 msgstr "désactivation de la correspondance de motif de cone"
 
-#: dir.c:1173
+#: dir.c:1191
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "impossible d'utiliser %s comme fichier d'exclusion"
 
-#: dir.c:2275
+#: dir.c:2296
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "impossible d'ouvrir le répertoire '%s'"
 
-#: dir.c:2575
+#: dir.c:2596
 msgid "failed to get kernel name and information"
 msgstr "echec de l'obtention d'information de kernel"
 
-#: dir.c:2699
+#: dir.c:2720
 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:3481
+#: dir.c:3502
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "fichier d'index corrompu dans le dépôt %s"
 
-#: dir.c:3526 dir.c:3531
+#: dir.c:3547 dir.c:3552
 #, c-format
 msgid "could not create directories for %s"
 msgstr "impossible de créer les répertoires pour %s"
 
-#: dir.c:3560
+#: dir.c:3581
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "impossible de migrer le répertoire git de '%s' vers '%s'"
@@ -3946,11 +3992,11 @@
 "suggestion : en attente de la fermeture du fichier par votre éditeur de "
 "texte…%c"
 
-#: entry.c:178
+#: entry.c:177
 msgid "Filtering content"
 msgstr "Filtrage du contenu"
 
-#: entry.c:479
+#: entry.c:478
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "impossible de stat le fichier '%s'"
@@ -3970,228 +4016,246 @@
 msgid "too many args to run %s"
 msgstr "trop d'arguments pour lancer %s"
 
-#: fetch-pack.c:151
+#: fetch-pack.c:152
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack : liste superficielle attendue"
 
-#: fetch-pack.c:154
+#: fetch-pack.c:155
 msgid "git fetch-pack: expected a flush packet after shallow list"
 msgstr ""
 "git fetch-pack : paquet de vidage attendu après une liste superficielle"
 
-#: fetch-pack.c:165
+#: fetch-pack.c:166
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack : ACK/NACK attendu, paquet de nettoyage reçu"
 
-#: fetch-pack.c:185
+#: fetch-pack.c:186
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack : ACK/NACK attendu, '%s' reçu"
 
-#: fetch-pack.c:196
+#: fetch-pack.c:197
 msgid "unable to write to remote"
 msgstr "impossible d'écrire sur un distant"
 
-#: fetch-pack.c:258
+#: fetch-pack.c:259
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc nécessite multi_ack_detailed"
 
-#: fetch-pack.c:357 fetch-pack.c:1364
+#: fetch-pack.c:358 fetch-pack.c:1408
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "ligne de superficiel invalide : %s"
 
-#: fetch-pack.c:363 fetch-pack.c:1370
+#: fetch-pack.c:364 fetch-pack.c:1414
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "ligne de fin de superficiel invalide : %s"
 
-#: fetch-pack.c:365 fetch-pack.c:1372
+#: fetch-pack.c:366 fetch-pack.c:1416
 #, c-format
 msgid "object not found: %s"
 msgstr "objet non trouvé : %s"
 
-#: fetch-pack.c:368 fetch-pack.c:1375
+#: fetch-pack.c:369 fetch-pack.c:1419
 #, c-format
 msgid "error in object: %s"
 msgstr "Erreur dans l'objet : %s"
 
-#: fetch-pack.c:370 fetch-pack.c:1377
+#: fetch-pack.c:371 fetch-pack.c:1421
 #, c-format
 msgid "no shallow found: %s"
 msgstr "Pas de superficiel trouvé : %s"
 
-#: fetch-pack.c:373 fetch-pack.c:1381
+#: fetch-pack.c:374 fetch-pack.c:1425
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "superficiel/non superficiel attendu, %s trouvé"
 
-#: fetch-pack.c:415
+#: fetch-pack.c:416
 #, c-format
 msgid "got %s %d %s"
 msgstr "réponse %s %d %s"
 
-#: fetch-pack.c:432
+#: fetch-pack.c:433
 #, c-format
 msgid "invalid commit %s"
 msgstr "commit invalide %s"
 
-#: fetch-pack.c:463
+#: fetch-pack.c:464
 msgid "giving up"
 msgstr "abandon"
 
-#: fetch-pack.c:476 progress.c:336
+#: fetch-pack.c:477 progress.c:336
 msgid "done"
 msgstr "fait"
 
-#: fetch-pack.c:488
+#: fetch-pack.c:489
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "%s trouvé (%d) %s"
 
-#: fetch-pack.c:534
+#: fetch-pack.c:535
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Marquage de %s comme terminé"
 
-#: fetch-pack.c:755
+#: fetch-pack.c:756
 #, c-format
 msgid "already have %s (%s)"
 msgstr "%s déjà possédé (%s)"
 
-#: fetch-pack.c:819
+#: fetch-pack.c:821
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack : impossible de dupliquer le démultiplexeur latéral"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:829
 msgid "protocol error: bad pack header"
 msgstr "erreur de protocole : mauvais entête de paquet"
 
-#: fetch-pack.c:901
+#: fetch-pack.c:910
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack : impossible de dupliquer %s"
 
-#: fetch-pack.c:917
+#: fetch-pack.c:927
 #, c-format
 msgid "%s failed"
 msgstr "échec de %s"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:929
 msgid "error in sideband demultiplexer"
 msgstr "erreur dans le démultiplexer latéral"
 
-#: fetch-pack.c:966
+#: fetch-pack.c:976
 #, c-format
 msgid "Server version is %.*s"
 msgstr "La version du serveur est %.*s"
 
-#: fetch-pack.c:971 fetch-pack.c:977 fetch-pack.c:980 fetch-pack.c:986
-#: fetch-pack.c:990 fetch-pack.c:994 fetch-pack.c:998 fetch-pack.c:1002
-#: fetch-pack.c:1006 fetch-pack.c:1010 fetch-pack.c:1014 fetch-pack.c:1018
-#: fetch-pack.c:1024 fetch-pack.c:1030 fetch-pack.c:1035 fetch-pack.c:1040
+#: fetch-pack.c:981 fetch-pack.c:987 fetch-pack.c:990 fetch-pack.c:996
+#: fetch-pack.c:1000 fetch-pack.c:1004 fetch-pack.c:1008 fetch-pack.c:1012
+#: fetch-pack.c:1016 fetch-pack.c:1020 fetch-pack.c:1024 fetch-pack.c:1028
+#: fetch-pack.c:1034 fetch-pack.c:1040 fetch-pack.c:1045 fetch-pack.c:1050
 #, c-format
 msgid "Server supports %s"
 msgstr "Le serveur supporte %s"
 
-#: fetch-pack.c:973
+#: fetch-pack.c:983
 msgid "Server does not support shallow clients"
 msgstr "Le serveur ne supporte les clients superficiels"
 
-#: fetch-pack.c:1033
+#: fetch-pack.c:1043
 msgid "Server does not support --shallow-since"
 msgstr "Le receveur ne gère pas --shallow-since"
 
-#: fetch-pack.c:1038
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-exclude"
 msgstr "Le receveur ne gère pas --shallow-exclude"
 
-#: fetch-pack.c:1042
+#: fetch-pack.c:1052
 msgid "Server does not support --deepen"
 msgstr "Le receveur ne gère pas --deepen"
 
-#: fetch-pack.c:1059
+#: fetch-pack.c:1054
+msgid "Server does not support this repository's object format"
+msgstr "Le serveur ne supporte pas ce format d'objets de ce dépôt"
+
+#: fetch-pack.c:1071
 msgid "no common commits"
 msgstr "pas de commit commun"
 
-#: fetch-pack.c:1071 fetch-pack.c:1563
+#: fetch-pack.c:1083 fetch-pack.c:1639
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack : échec de le récupération."
 
 #: fetch-pack.c:1211
-msgid "Server does not support shallow requests"
-msgstr "Le serveur ne supporte les requêtes superficielles"
+#, c-format
+msgid "mismatched algorithms: client %s; server %s"
+msgstr "non-correspondance des algorithmes : client %s ; serveur %s"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1215
+#, c-format
+msgid "the server does not support algorithm '%s'"
+msgstr "Le serveur ne supporte pas l'algorithme '%s'"
+
+#: fetch-pack.c:1235
+msgid "Server does not support shallow requests"
+msgstr "Le serveur ne supporte pas les requêtes superficielles"
+
+#: fetch-pack.c:1242
 msgid "Server supports filter"
 msgstr "Le serveur supporte filter"
 
-#: fetch-pack.c:1242
+#: fetch-pack.c:1286
 msgid "unable to write request to remote"
 msgstr "impossible d'écrire la requête sur le distant"
 
-#: fetch-pack.c:1260
+#: fetch-pack.c:1304
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "erreur à la lecture de l'entête de section '%s'"
 
-#: fetch-pack.c:1266
+#: fetch-pack.c:1310
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "'%s' attendu, '%s' reçu"
 
-#: fetch-pack.c:1327
+#: fetch-pack.c:1371
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "ligne d'acquittement inattendue : '%s'"
 
-#: fetch-pack.c:1332
+#: fetch-pack.c:1376
 #, c-format
 msgid "error processing acks: %d"
 msgstr "erreur lors du traitement des acquittements : %d"
 
-#: fetch-pack.c:1342
+#: fetch-pack.c:1386
 msgid "expected packfile to be sent after 'ready'"
 msgstr "fichier paquet attendu à envoyer après 'ready'"
 
-#: fetch-pack.c:1344
+#: fetch-pack.c:1388
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "aucune autre section attendue à envoyer après absence de 'ready'"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1430
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "erreur lors du traitement de l'information de superficialité : %d"
 
-#: fetch-pack.c:1433
+#: fetch-pack.c:1477
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "wanted-ref attendu, '%s' trouvé"
 
-#: fetch-pack.c:1438
+#: fetch-pack.c:1482
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "wanted-ref inattendu : '%s'"
 
-#: fetch-pack.c:1443
+#: fetch-pack.c:1487
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "erreur lors du traitement des références voulues : %d"
 
-#: fetch-pack.c:1789
+#: fetch-pack.c:1517
+msgid "git fetch-pack: expected response end packet"
+msgstr "git fetch-pack : paquet de fin de réponse attendu"
+
+#: fetch-pack.c:1921
 msgid "no matching remote head"
 msgstr "pas de HEAD distante correspondante"
 
-#: fetch-pack.c:1812 builtin/clone.c:692
+#: fetch-pack.c:1944 builtin/clone.c:692
 msgid "remote did not send all necessary objects"
 msgstr "le serveur distant n'a pas envoyé tous les objets nécessaires"
 
-#: fetch-pack.c:1839
+#: fetch-pack.c:1971
 #, c-format
 msgid "no such remote ref %s"
 msgstr "référence distante inconnue %s"
 
-#: fetch-pack.c:1842
+#: fetch-pack.c:1974
 #, 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é"
@@ -4227,7 +4291,7 @@
 msgid "'%s': unable to read %s"
 msgstr "'%s' : lecture de %s impossible"
 
-#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:82
+#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:89
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
@@ -4376,16 +4440,16 @@
 "\n"
 "Les commandes les plus ressemblantes sont"
 
-#: help.c:653
+#: help.c:654
 msgid "git version [<options>]"
 msgstr "git version [<options>]"
 
-#: help.c:708
+#: help.c:709
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:712
+#: help.c:713
 msgid ""
 "\n"
 "Did you mean this?"
@@ -4485,6 +4549,10 @@
 msgid "multiple filter-specs cannot be combined"
 msgstr "impossible de combiner des spécificateurs multiples de filtre"
 
+#: list-objects-filter-options.c:330
+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"
+
 #: list-objects-filter.c:492
 #, c-format
 msgid "unable to access sparse blob in '%s'"
@@ -4851,7 +4919,7 @@
 msgid "Skipped %s (merged same as existing)"
 msgstr "%s sauté (fusion identique à l'existant)"
 
-#: merge-recursive.c:3101 git-submodule.sh:985
+#: merge-recursive.c:3101 git-submodule.sh:959
 msgid "submodule"
 msgstr "sous-module"
 
@@ -4980,7 +5048,7 @@
 msgstr "impossible de lire le cache"
 
 #: merge.c:108 rerere.c:720 builtin/am.c:1878 builtin/am.c:1912
-#: builtin/checkout.c:559 builtin/checkout.c:824 builtin/clone.c:816
+#: builtin/checkout.c:559 builtin/checkout.c:822 builtin/clone.c:816
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "impossible d'écrire le nouveau fichier d'index"
@@ -5233,21 +5301,21 @@
 msgid "hash mismatch %s"
 msgstr "incohérence de hachage %s"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2135
+#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2184
 #, c-format
 msgid "unable to get size of %s"
 msgstr "impossible de récupérer la taille de %s"
 
-#: packfile.c:629
+#: packfile.c:630
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "offset avant la fin du fichier paquet (.idx cassé ?)"
 
-#: packfile.c:1899
+#: packfile.c:1900
 #, 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:1903
+#: packfile.c:1904
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
@@ -5457,46 +5525,50 @@
 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"
+
+#: pkt-line.c:113
 msgid "flush packet write failed"
 msgstr "échec de l'écriture du vidage de paquet"
 
-#: pkt-line.c:146 pkt-line.c:232
+#: pkt-line.c:153 pkt-line.c:239
 msgid "protocol error: impossibly long line"
 msgstr "erreur de protocole : ligne impossiblement trop longue"
 
-#: pkt-line.c:162 pkt-line.c:164
+#: pkt-line.c:169 pkt-line.c:171
 msgid "packet write with format failed"
 msgstr "échec de l'écriture d'un paquet avec format"
 
-#: pkt-line.c:196
+#: pkt-line.c:203
 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"
 
-#: pkt-line.c:203 pkt-line.c:210
+#: pkt-line.c:210 pkt-line.c:217
 msgid "packet write failed"
 msgstr "échec de l'écriture d'un paquet"
 
-#: pkt-line.c:295
+#: pkt-line.c:302
 msgid "read error"
 msgstr "erreur de lecture"
 
-#: pkt-line.c:303
+#: pkt-line.c:310
 msgid "the remote end hung up unexpectedly"
 msgstr "L'hôte distant a fermé la connexion de manière inattendue"
 
-#: pkt-line.c:331
+#: pkt-line.c:338
 #, c-format
 msgid "protocol error: bad line length character: %.4s"
 msgstr "erreur de protocole : mauvais caractère de longueur de ligne : %.4s"
 
-#: pkt-line.c:341 pkt-line.c:346
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
 msgid "protocol error: bad line length %d"
 msgstr "erreur de protocole : mauvaise longueur de ligne %d"
 
-#: pkt-line.c:362
+#: pkt-line.c:373
 #, c-format
 msgid "remote error: %s"
 msgstr "erreur distante : %s"
@@ -5545,7 +5617,9 @@
 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'"
+msgstr ""
+"impossible d'analyser la première ligne de la sortie de `log` : ne commence "
+"pas par 'commit' : '%s'"
 
 #: range-diff.c:137
 #, c-format
@@ -5674,7 +5748,7 @@
 
 #: read-cache.c:1983 read-cache.c:2271 rerere.c:565 rerere.c:599 rerere.c:1111
 #: submodule.c:1619 builtin/add.c:532 builtin/check-ignore.c:181
-#: builtin/checkout.c:488 builtin/checkout.c:676 builtin/clean.c:961
+#: builtin/checkout.c:488 builtin/checkout.c:674 builtin/clean.c:991
 #: builtin/commit.c:364 builtin/diff-tree.c:121 builtin/grep.c:507
 #: builtin/mv.c:145 builtin/reset.c:247 builtin/rm.c:290
 #: builtin/submodule--helper.c:332
@@ -5731,7 +5805,7 @@
 msgid "broken index, expect %s in %s, got %s"
 msgstr "index cassé, %s attendu dans %s, %s obtenu"
 
-#: read-cache.c:3026 strbuf.c:1176 wrapper.c:622 builtin/merge.c:1130
+#: read-cache.c:3026 strbuf.c:1171 wrapper.c:630 builtin/merge.c:1130
 #, c-format
 msgid "could not close '%s'"
 msgstr "impossible de fermer '%s'"
@@ -5916,7 +5990,7 @@
 msgstr "impossible de lire '%s'."
 
 # à priori on parle d'une branche ici
-#: ref-filter.c:42 wt-status.c:1936
+#: ref-filter.c:42 wt-status.c:1977
 msgid "gone"
 msgstr "disparue"
 
@@ -6141,7 +6215,7 @@
 msgid "ignoring ref with broken name %s"
 msgstr "réf avec un nom cassé %s ignoré"
 
-#: ref-filter.c:2095 refs.c:625
+#: ref-filter.c:2095 refs.c:657
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "réf cassé %s ignoré"
@@ -6171,94 +6245,108 @@
 msgid "option `%s' must point to a commit"
 msgstr "l'option '%s' doit pointer sur un commit"
 
-#: refs.c:262
+#: refs.c:264
 #, c-format
 msgid "%s does not point to a valid object!"
 msgstr "%s ne pointe pas sur un objet valide!"
 
-#: refs.c:623
+#: refs.c:572
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr "impossible de récupérer `%s`"
+
+#: refs.c:579
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "Nom de branche invalide : %s = %s"
+
+#: refs.c:655
 #, c-format
 msgid "ignoring dangling symref %s"
 msgstr "symref pendant %s ignoré"
 
-#: refs.c:760
+#: refs.c:792
 #, c-format
 msgid "could not open '%s' for writing: %s"
 msgstr "impossible d'ouvrir '%s' en écriture : %s"
 
-#: refs.c:770 refs.c:821
+#: refs.c:802 refs.c:853
 #, c-format
 msgid "could not read ref '%s'"
 msgstr "impossible de lire la réf '%s'"
 
-#: refs.c:776
+#: refs.c:808
 #, c-format
 msgid "ref '%s' already exists"
 msgstr "la référence '%s' existe déjà"
 
-#: refs.c:781
+#: refs.c:813
 #, c-format
 msgid "unexpected object ID when writing '%s'"
 msgstr "id d'objet inattendu pendant l'écriture de '%s'"
 
-#: refs.c:789 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
-#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1173
-#: wrapper.c:620
+#: refs.c:821 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
+#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1168
+#: wrapper.c:628
 #, c-format
 msgid "could not write to '%s'"
 msgstr "impossible d'écrire dans '%s'"
 
-#: refs.c:816 strbuf.c:1171 wrapper.c:188 wrapper.c:358 builtin/am.c:719
+#: refs.c:848 strbuf.c:1166 wrapper.c:196 wrapper.c:366 builtin/am.c:719
 #: builtin/rebase.c:852
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "impossible d'ouvrir '%s' en écriture"
 
-#: refs.c:823
+#: refs.c:855
 #, c-format
 msgid "unexpected object ID when deleting '%s'"
 msgstr "id d'objet inattendu pendant la suppression de '%s'"
 
-#: refs.c:954
+#: refs.c:986
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr "le journal pour la réf %s contient un trou après %s"
 
-#: refs.c:960
+#: refs.c:992
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr "le journal pour la réf %s s'arrête de manière inattendue sur %s"
 
-#: refs.c:1019
+#: refs.c:1051
 #, c-format
 msgid "log for %s is empty"
 msgstr "le journal pour la réf %s est vide"
 
-#: refs.c:1111
+#: refs.c:1143
 #, c-format
 msgid "refusing to update ref with bad name '%s'"
 msgstr "refus de mettre à jour une réf avec un nom cassé '%s'"
 
-#: refs.c:1187
+#: refs.c:1219
 #, c-format
 msgid "update_ref failed for ref '%s': %s"
 msgstr "échec de update_ref pour la réf '%s' : %s"
 
-#: refs.c:1979
+#: refs.c:2011
 #, c-format
 msgid "multiple updates for ref '%s' not allowed"
 msgstr "mises à jour multiples pour la réf '%s' non permises"
 
-#: refs.c:2011
+#: refs.c:2098
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "mises à jour des références interdites en environnement de quarantaine"
 
-#: refs.c:2107 refs.c:2137
+#: refs.c:2109
+msgid "ref updates aborted by hook"
+msgstr "mises à jour des références annulées par le crochet"
+
+#: refs.c:2209 refs.c:2239
 #, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr "'%s' existe ; impossible de créer '%s'"
 
-#: refs.c:2113 refs.c:2148
+#: refs.c:2215 refs.c:2250
 #, c-format
 msgid "cannot process '%s' and '%s' at the same time"
 msgstr "impossible de traiter '%s' et '%s' en même temps"
@@ -6555,7 +6643,7 @@
 msgstr ""
 "  (utilisez \"git pull\" pour fusionner la branche distante dans la vôtre)\n"
 
-#: remote.c:2233
+#: remote.c:2241
 #, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr "impossible d'analyser le nom attendu d'objet '%s'"
@@ -6578,7 +6666,8 @@
 #: repository.c:94 builtin/init-db.c:188
 #, c-format
 msgid "The hash algorithm %s is not supported in this build."
-msgstr "L'algorithme d'empreinte %s n'est pas pris en charge par cette version."
+msgstr ""
+"L'algorithme d'empreinte %s n'est pas pris en charge par cette version."
 
 #: rerere.c:217 rerere.c:226 rerere.c:229
 msgid "corrupt MERGE_RR"
@@ -6682,20 +6771,20 @@
 msgid "failed to find tree of %s"
 msgstr "impossible de trouver l'arbre de %s"
 
-#: revision.c:2655
+#: revision.c:2661
 msgid "your current branch appears to be broken"
 msgstr "votre branche actuelle semble cassée"
 
-#: revision.c:2658
+#: revision.c:2664
 #, 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:2866
+#: revision.c:2873
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent est incompatible avec --bisect"
 
-#: revision.c:2870
+#: revision.c:2877
 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"
 
@@ -6738,11 +6827,15 @@
 msgid "failed to sign the push certificate"
 msgstr "impossible de signer le certificat de poussée"
 
-#: send-pack.c:399
+#: send-pack.c:394
+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:403
 msgid "the receiving end does not support --signed push"
 msgstr "Le receveur ne gère pas les poussées avec --signed"
 
-#: send-pack.c:401
+#: send-pack.c:405
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -6750,11 +6843,11 @@
 "pas d'envoi de certificat de poussée car le receveur ne gère pas les "
 "poussées avec --signed"
 
-#: send-pack.c:413
+#: send-pack.c:417
 msgid "the receiving end does not support --atomic push"
 msgstr "Le receveur ne gère pas les poussées avec --atomic"
 
-#: send-pack.c:418
+#: send-pack.c:422
 msgid "the receiving end does not support push options"
 msgstr "Le receveur ne gère pas les options de poussées"
 
@@ -6875,7 +6968,7 @@
 msgid "unable to dequote value of '%s'"
 msgstr "Impossible de décoter la valeur de '%s'"
 
-#: sequencer.c:785 wrapper.c:190 wrapper.c:360 builtin/am.c:710
+#: sequencer.c:785 wrapper.c:198 wrapper.c:368 builtin/am.c:710
 #: builtin/am.c:802 builtin/merge.c:1125 builtin/rebase.c:896
 #, c-format
 msgid "could not open '%s' for reading"
@@ -7515,7 +7608,8 @@
 
 #: sequencer.c:3765
 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:3857
 #, c-format
@@ -7719,84 +7813,84 @@
 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:569
+#: setup.c:604
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Version attendue du dépôt git <= %d, %d trouvée"
 
-#: setup.c:577
+#: setup.c:612
 msgid "unknown repository extensions found:"
 msgstr "extensions de dépôt inconnues trouvées :"
 
-#: setup.c:596
+#: setup.c:631
 #, c-format
 msgid "error opening '%s'"
 msgstr "erreur à l'ouverture de '%s'"
 
-#: setup.c:598
+#: setup.c:633
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "trop gros pour être une fichier .git : '%s'"
 
-#: setup.c:600
+#: setup.c:635
 #, c-format
 msgid "error reading %s"
 msgstr "erreur à la lecture de %s"
 
-#: setup.c:602
+#: setup.c:637
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "format de fichier git invalide : %s"
 
-#: setup.c:604
+#: setup.c:639
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "aucun chemin dans le fichier git : %s"
 
-#: setup.c:606
+#: setup.c:641
 #, c-format
 msgid "not a git repository: %s"
 msgstr "ce n'est pas un dépôt git : %s"
 
-#: setup.c:708
+#: setup.c:743
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' trop gros"
 
-#: setup.c:722
+#: setup.c:757
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "ce n'est pas un dépôt git : '%s'"
 
-#: setup.c:751 setup.c:753 setup.c:784
+#: setup.c:786 setup.c:788 setup.c:819
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "impossible de se déplacer vers le répertoire (chdir) '%s'"
 
-#: setup.c:756 setup.c:812 setup.c:822 setup.c:861 setup.c:869
+#: setup.c:791 setup.c:847 setup.c:857 setup.c:896 setup.c:904
 msgid "cannot come back to cwd"
 msgstr "impossible de revenir au répertoire de travail courant"
 
-#: setup.c:883
+#: setup.c:918
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "échec du stat de '%*s%s%s'"
 
-#: setup.c:1121
+#: setup.c:1156
 msgid "Unable to read current working directory"
 msgstr "Impossible d'accéder au répertoire de travail courant"
 
-#: setup.c:1130 setup.c:1136
+#: setup.c:1165 setup.c:1171
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "impossible de modifier en '%s'"
 
-#: setup.c:1141
+#: setup.c:1176
 #, 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:1147
+#: setup.c:1182
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -7807,7 +7901,7 @@
 "Arrêt à la limite du système de fichiers (GIT_DISCOVERY_ACROSS_FILESYSTEM "
 "n'est pas défini)."
 
-#: setup.c:1258
+#: setup.c:1293
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -7817,15 +7911,15 @@
 "Le propriétaire des fichiers doit toujours avoir les droits en lecture et "
 "écriture."
 
-#: setup.c:1304
+#: setup.c:1340
 msgid "open /dev/null or dup failed"
 msgstr "échec de l'ouverture ou au dup de /dev/null"
 
-#: setup.c:1319
+#: setup.c:1355
 msgid "fork failed"
 msgstr "échec de la bifurcation"
 
-#: setup.c:1324
+#: setup.c:1360
 msgid "setsid failed"
 msgstr "échec du setsid"
 
@@ -8009,7 +8103,7 @@
 msgid "confused by unstable object source data for %s"
 msgstr "données de source d'objet instable pour %s"
 
-#: sha1-file.c:1906 builtin/pack-objects.c:1055
+#: sha1-file.c:1906 builtin/pack-objects.c:1085
 #, c-format
 msgid "failed utime() on %s"
 msgstr "échec de utime() sur %s"
@@ -8189,43 +8283,43 @@
 msgstr "nom d'objet invalide : '%.*s'."
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
-#: strbuf.c:853
+#: strbuf.c:848
 #, c-format
 msgid "%u.%2.2u GiB"
 msgstr "%u.%2.2u Gio"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
-#: strbuf.c:855
+#: strbuf.c:850
 #, c-format
 msgid "%u.%2.2u GiB/s"
 msgstr "%u.%2.2u Gio/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte
-#: strbuf.c:863
+#: strbuf.c:858
 #, c-format
 msgid "%u.%2.2u MiB"
 msgstr "%u.%2.2u Mio"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
-#: strbuf.c:865
+#: strbuf.c:860
 #, c-format
 msgid "%u.%2.2u MiB/s"
 msgstr "%u.%2.2u Mio/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte
-#: strbuf.c:872
+#: strbuf.c:867
 #, c-format
 msgid "%u.%2.2u KiB"
 msgstr "%u.%2.2u Kio"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
-#: strbuf.c:874
+#: strbuf.c:869
 #, c-format
 msgid "%u.%2.2u KiB/s"
 msgstr "%u.%2.2u Kio/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte
-#: strbuf.c:880
+#: strbuf.c:875
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -8233,14 +8327,14 @@
 msgstr[1] "%u octets"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte/second
-#: strbuf.c:882
+#: strbuf.c:877
 #, c-format
 msgid "%u byte/s"
 msgid_plural "%u bytes/s"
 msgstr[0] "%u octet/s"
 msgstr[1] "%u octets/s"
 
-#: strbuf.c:1180
+#: strbuf.c:1175
 #, c-format
 msgid "could not edit '%s'"
 msgstr "impossible d'éditer '%s'"
@@ -8492,7 +8586,7 @@
 msgid "could not read from stdin"
 msgstr "Impossible de lire depuis l'entrée standard"
 
-#: trailer.c:1011 wrapper.c:665
+#: trailer.c:1011 wrapper.c:673
 #, c-format
 msgid "could not stat %s"
 msgstr "stat impossible de %s"
@@ -8516,21 +8610,21 @@
 msgid "could not rename temporary file to %s"
 msgstr "impossible de renommer un fichier temporaire en %s"
 
-#: transport-helper.c:61 transport-helper.c:90
+#: transport-helper.c:62 transport-helper.c:91
 msgid "full write to remote helper failed"
 msgstr "échec de l'écriture totale sur l'assistant distant"
 
-#: transport-helper.c:144
+#: transport-helper.c:145
 #, c-format
 msgid "unable to find remote helper for '%s'"
 msgstr "Impossible de trouver un assistant distant pour '%s'"
 
-#: transport-helper.c:160 transport-helper.c:571
+#: 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"
 
-#: transport-helper.c:211
+#: transport-helper.c:214
 #, c-format
 msgid ""
 "unknown mandatory capability %s; this remote helper probably needs newer "
@@ -8539,161 +8633,166 @@
 "capacité obligatoire inconnue %s ; cet assistant distant requiert "
 "probablement une une nouvelle version de Git"
 
-#: transport-helper.c:217
+#: transport-helper.c:220
 msgid "this remote helper should implement refspec capability"
 msgstr "cet assistant distant devrait supporter la capacité refspec"
 
-#: transport-helper.c:284 transport-helper.c:425
+#: transport-helper.c:287 transport-helper.c:429
 #, c-format
 msgid "%s unexpectedly said: '%s'"
 msgstr "%s a dit de manière inattendue : '%s'"
 
-#: transport-helper.c:414
+#: transport-helper.c:417
 #, c-format
 msgid "%s also locked %s"
 msgstr "%s a aussi verrouillé %s"
 
-#: transport-helper.c:493
+#: transport-helper.c:497
 msgid "couldn't run fast-import"
 msgstr "impossible de lancer fast-import"
 
-#: transport-helper.c:516
+#: transport-helper.c:520
 msgid "error while running fast-import"
 msgstr "erreur au lancement de fast-import"
 
-#: transport-helper.c:545 transport-helper.c:1135
+#: transport-helper.c:549 transport-helper.c:1156
 #, c-format
 msgid "could not read ref %s"
 msgstr "impossible de lire la réf %s"
 
-#: transport-helper.c:590
+#: transport-helper.c:594
 #, c-format
 msgid "unknown response to connect: %s"
 msgstr "réponse inconnue à connect : %s"
 
-#: transport-helper.c:612
+#: 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"
 
-#: transport-helper.c:614
+#: transport-helper.c:618
 msgid "invalid remote service path"
 msgstr "chemin de service distant invalide"
 
-#: transport-helper.c:657 transport.c:1339
+#: transport-helper.c:661 transport.c:1347
 msgid "operation not supported by protocol"
 msgstr "option non supportée par le protocole"
 
-#: transport-helper.c:660
+#: transport-helper.c:664
 #, c-format
 msgid "can't connect to subservice %s"
 msgstr "impossible de se connecter au sous-service %s"
 
-#: transport-helper.c:736
+#: transport-helper.c:740
 #, c-format
 msgid "expected ok/error, helper said '%s'"
 msgstr "ok/error attendu, l'assistant a dit '%s'"
 
-#: transport-helper.c:789
+#: transport-helper.c:793
 #, c-format
 msgid "helper reported unexpected status of %s"
 msgstr "l'assistant a renvoyé un statut de retour inattendu %s"
 
-#: transport-helper.c:850
+#: transport-helper.c:854
 #, c-format
 msgid "helper %s does not support dry-run"
 msgstr "l'assistant %s ne gère pas dry-run"
 
-#: transport-helper.c:853
+#: transport-helper.c:857
 #, c-format
 msgid "helper %s does not support --signed"
 msgstr "l'assistant %s ne gère pas --signed"
 
-#: transport-helper.c:856
+#: transport-helper.c:860
 #, c-format
 msgid "helper %s does not support --signed=if-asked"
 msgstr "l'assistant %s ne gère pas --signed=if-asked"
 
-#: transport-helper.c:861
+#: transport-helper.c:865
 #, c-format
 msgid "helper %s does not support --atomic"
 msgstr "l'assistant %s ne gère pas --atomic"
 
-#: transport-helper.c:867
+#: transport-helper.c:871
 #, c-format
 msgid "helper %s does not support 'push-option'"
 msgstr "l'assistant %s ne gère pas 'push-option'"
 
-#: transport-helper.c:966
+#: transport-helper.c:970
 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"
 
-#: transport-helper.c:971
+#: transport-helper.c:975
 #, c-format
 msgid "helper %s does not support 'force'"
 msgstr "l'assistant %s ne gère pas 'force'"
 
-#: transport-helper.c:1018
+#: transport-helper.c:1022
 msgid "couldn't run fast-export"
 msgstr "impossible de lancer fast-export"
 
-#: transport-helper.c:1023
+#: transport-helper.c:1027
 msgid "error while running fast-export"
 msgstr "erreur au lancement de fast-export"
 
-#: transport-helper.c:1048
+#: transport-helper.c:1052
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
-"Perhaps you should specify a branch such as 'master'.\n"
+"Perhaps you should specify a branch.\n"
 msgstr ""
 "Aucune référence en commun et aucune spécfiée ; rien à faire.\n"
-"Vous devriez peut-être spécifier une branche telle que 'master'.\n"
+"Vous devriez peut-être spécifier une branche.\n"
 
-#: transport-helper.c:1121
+#: transport-helper.c:1133
+#, c-format
+msgid "unsupported object format '%s'"
+msgstr "format d'objet non géré '%s'"
+
+#: transport-helper.c:1142
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "réponse malformée dans le liste de réfs : %s"
 
-#: transport-helper.c:1273
+#: transport-helper.c:1294
 #, c-format
 msgid "read(%s) failed"
 msgstr "échec de read(%s)"
 
-#: transport-helper.c:1300
+#: transport-helper.c:1321
 #, c-format
 msgid "write(%s) failed"
 msgstr "échec de write(%s)"
 
-#: transport-helper.c:1349
+#: transport-helper.c:1370
 #, c-format
 msgid "%s thread failed"
 msgstr "échec du fil d'exécution %s"
 
-#: transport-helper.c:1353
+#: transport-helper.c:1374
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "échec de jonction du fil d'exécution %s : %s"
 
-#: transport-helper.c:1372 transport-helper.c:1376
+#: transport-helper.c:1393 transport-helper.c:1397
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "impossible de démarrer le fil d'exécution pour copier les données : %s"
 
-#: transport-helper.c:1413
+#: transport-helper.c:1434
 #, c-format
 msgid "%s process failed to wait"
 msgstr "échec du processus %s pour l'attente"
 
-#: transport-helper.c:1417
+#: transport-helper.c:1438
 #, c-format
 msgid "%s process failed"
 msgstr "échec du processus %s"
 
-#: transport-helper.c:1435 transport-helper.c:1444
+#: transport-helper.c:1456 transport-helper.c:1465
 msgid "can't start thread for copying data"
 msgstr "impossible de démarrer le fil d'exécution pour copier les données"
 
@@ -8707,33 +8806,33 @@
 msgid "could not read bundle '%s'"
 msgstr "impossible de lire la liasse '%s'"
 
-#: transport.c:214
+#: transport.c:220
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport : option de profondeur invalide '%s'"
 
-#: transport.c:266
+#: transport.c:272
 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:267
+#: transport.c:273
 msgid "server options require protocol version 2 or later"
 msgstr "les options de serveur exigent une version 2 ou supérieure"
 
-#: transport.c:632
+#: transport.c:631
 msgid "could not parse transport.color.* config"
 msgstr "impossible d'analyser la configuration transport.color.*"
 
-#: transport.c:705
+#: transport.c:704
 msgid "support for protocol v2 not implemented yet"
 msgstr "le support du protocole v2 n'est pas encore implanté"
 
-#: transport.c:839
+#: transport.c:838
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "valeur inconnue pour la config '%s' : %s"
 
-#: transport.c:905
+#: transport.c:904
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "transport '%s' non permis"
@@ -8742,7 +8841,7 @@
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync n'est plus supporté"
 
-#: transport.c:1052
+#: transport.c:1059
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -8751,7 +8850,7 @@
 "Les chemins suivants de sous-module contiennent des modifications\n"
 "qui ne peuvent être trouvées sur aucun distant :\n"
 
-#: transport.c:1056
+#: transport.c:1063
 #, c-format
 msgid ""
 "\n"
@@ -8778,11 +8877,11 @@
 "pour les pousser vers un serveur distant.\n"
 "\n"
 
-#: transport.c:1064
+#: transport.c:1071
 msgid "Aborting."
 msgstr "Abandon."
 
-#: transport.c:1209
+#: transport.c:1216
 msgid "failed to push all needed submodules"
 msgstr "échec de la poussée de tous les sous-modules nécessaires"
 
@@ -9008,7 +9107,8 @@
 "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:180
@@ -9017,7 +9117,8 @@
 "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:182
@@ -9027,7 +9128,8 @@
 "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:262
@@ -9040,7 +9142,9 @@
 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"
+msgstr ""
+"Après correction des chemins ci-dessus, vous voulez peut-être lancer `git "
+"sparse-checkout reapply`.\n"
 
 #: unpack-trees.c:350
 msgid "Updating files"
@@ -9060,7 +9164,7 @@
 msgid "Updating index flags"
 msgstr "Mise à jour des drapeaux de l'index"
 
-#: upload-pack.c:1337
+#: upload-pack.c:1415
 msgid "expected flush after fetch arguments"
 msgstr "vidage attendu après les arguments de récupération"
 
@@ -9097,50 +9201,50 @@
 msgid "Fetching objects"
 msgstr "Récupération des objets"
 
-#: worktree.c:262 builtin/am.c:2098
+#: worktree.c:248 builtin/am.c:2098
 #, c-format
 msgid "failed to read '%s'"
 msgstr "échec de la lecture de '%s'"
 
-#: worktree.c:309
+#: worktree.c:295
 #, 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"
 
-#: worktree.c:320
+#: worktree.c:306
 #, 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"
 
-#: worktree.c:332
+#: worktree.c:318
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' n'existe pas"
 
-#: worktree.c:338
+#: worktree.c:324
 #, 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:347
+#: worktree.c:333
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' ne pointe pas en retour sur '%s'"
 
-#: wrapper.c:186 wrapper.c:356
+#: wrapper.c:194 wrapper.c:364
 #, c-format
 msgid "could not open '%s' for reading and writing"
 msgstr "impossible d'ouvrir '%s' en lecture/écriture"
 
-#: wrapper.c:387 wrapper.c:588
+#: wrapper.c:395 wrapper.c:596
 #, c-format
 msgid "unable to access '%s'"
 msgstr "impossible d'accéder à '%s'"
 
-#: wrapper.c:596
+#: wrapper.c:604
 msgid "unable to get current working directory"
 msgstr "impossible d'accéder au répertoire de travail courant"
 
@@ -9534,39 +9638,44 @@
 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:1692
+#: wt-status.c:1494
+#, 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."
+
+#: wt-status.c:1733
 msgid "On branch "
 msgstr "Sur la branche "
 
-#: wt-status.c:1699
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "rebasage interactif en cours ; sur "
 
-#: wt-status.c:1701
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "rebasage en cours ; sur "
 
-#: wt-status.c:1711
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Actuellement sur aucun branche."
 
-#: wt-status.c:1728
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "Validation initiale"
 
-#: wt-status.c:1729
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "Aucun commit"
 
-#: wt-status.c:1743
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "Fichiers non suivis"
 
-#: wt-status.c:1745
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "Fichiers ignorés"
 
-#: wt-status.c:1749
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9578,32 +9687,32 @@
 "oublier d'ajouter les nouveaux fichiers par vous-même (voir 'git help "
 "status')."
 
-#: wt-status.c:1755
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Fichiers non suivis non affichés%s"
 
-#: wt-status.c:1757
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (utilisez -u pour afficher les fichiers non suivis)"
 
-#: wt-status.c:1763
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Aucune modification"
 
-#: wt-status.c:1768
+#: wt-status.c:1809
 #, 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"
 
-#: wt-status.c:1771
+#: wt-status.c:1812
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "aucune modification ajoutée à la validation\n"
 
-#: wt-status.c:1774
+#: wt-status.c:1815
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9612,66 +9721,66 @@
 "aucune modification ajoutée à la validation mais des fichiers non suivis "
 "sont présents (utilisez \"git add\" pour les suivre)\n"
 
-#: wt-status.c:1777
+#: wt-status.c:1818
 #, 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"
 
-#: wt-status.c:1780
+#: wt-status.c:1821
 #, 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"
 
-#: wt-status.c:1783 wt-status.c:1788
+#: wt-status.c:1824 wt-status.c:1829
 #, c-format
 msgid "nothing to commit\n"
 msgstr "rien à valider\n"
 
-#: wt-status.c:1786
+#: wt-status.c:1827
 #, 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:1790
+#: wt-status.c:1831
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "rien à valider, la copie de travail est propre\n"
 
-#: wt-status.c:1903
+#: wt-status.c:1944
 msgid "No commits yet on "
 msgstr "Encore aucun commit sur "
 
-#: wt-status.c:1907
+#: wt-status.c:1948
 msgid "HEAD (no branch)"
 msgstr "HEAD (aucune branche)"
 
-#: wt-status.c:1938
+#: wt-status.c:1979
 msgid "different"
 msgstr "différent"
 
-#: wt-status.c:1940 wt-status.c:1948
+#: wt-status.c:1981 wt-status.c:1989
 msgid "behind "
 msgstr "derrière "
 
-#: wt-status.c:1943 wt-status.c:1946
+#: wt-status.c:1984 wt-status.c:1987
 msgid "ahead "
 msgstr "devant "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2468
+#: wt-status.c:2509
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "Impossible de %s : vous avez des modifications non indexées."
 
-#: wt-status.c:2474
+#: wt-status.c:2515
 msgid "additionally, your index contains uncommitted changes."
 msgstr "de plus, votre index contient des modifications non validées."
 
-#: wt-status.c:2476
+#: wt-status.c:2517
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "%s impossible : votre index contient des modifications non validées."
@@ -9749,7 +9858,7 @@
 msgid "interactive picking"
 msgstr "sélection interactive"
 
-#: builtin/add.c:326 builtin/checkout.c:1535 builtin/reset.c:308
+#: builtin/add.c:326 builtin/checkout.c:1533 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "sélection interactive des sections"
 
@@ -9881,12 +9990,12 @@
 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:501 builtin/checkout.c:1703 builtin/commit.c:351
+#: builtin/add.c:501 builtin/checkout.c:1701 builtin/commit.c:351
 #: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1506
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file est incompatible avec pathspec arguments"
 
-#: builtin/add.c:508 builtin/checkout.c:1715 builtin/commit.c:357
+#: builtin/add.c:508 builtin/checkout.c:1713 builtin/commit.c:357
 #: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1512
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul nécessite --pathspec-from-file"
@@ -10154,7 +10263,7 @@
 msgid "allow fall back on 3way merging if needed"
 msgstr "permettre de revenir à une fusion à 3 points si nécessaire"
 
-#: builtin/am.c:2218 builtin/init-db.c:541 builtin/prune-packed.c:16
+#: builtin/am.c:2218 builtin/init-db.c:559 builtin/prune-packed.c:16
 #: builtin/repack.c:306 builtin/stash.c:816
 msgid "be quiet"
 msgstr "être silencieux"
@@ -10210,7 +10319,7 @@
 
 #: builtin/am.c:2262 builtin/branch.c:659 builtin/for-each-ref.c:38
 #: builtin/replace.c:556 builtin/tag.c:438 builtin/verify-tag.c:38
-#: bugreport.c:131
+#: bugreport.c:137
 msgid "format"
 msgstr "format"
 
@@ -10511,112 +10620,116 @@
 "Les options supportées sont : --term-good|--term-old et --term-bad|--term-"
 "new."
 
-#: builtin/bisect--helper.c:478
+#: builtin/bisect--helper.c:460 builtin/bisect--helper.c:473
+msgid "'' is not a valid term"
+msgstr "'' n'est pas un terme valide"
+
+#: builtin/bisect--helper.c:483
 #, c-format
 msgid "unrecognized option: '%s'"
-msgstr "option non reconnue : %s"
+msgstr "option non reconnue : '%s'"
 
-#: builtin/bisect--helper.c:482
+#: builtin/bisect--helper.c:487
 #, 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:514
+#: builtin/bisect--helper.c:519
 msgid "bad HEAD - I need a HEAD"
 msgstr "mauvaise HEAD - j'ai besoin d'une HEAD"
 
-#: builtin/bisect--helper.c:529
+#: builtin/bisect--helper.c:534
 #, 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>'."
 
-#: builtin/bisect--helper.c:550
+#: builtin/bisect--helper.c:555
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "refus de bissecter sur un arbre 'cg-seeked'"
 
-#: builtin/bisect--helper.c:553
+#: builtin/bisect--helper.c:558
 msgid "bad HEAD - strange symbolic ref"
 msgstr "mauvaise HEAD - référence symbolique douteuse"
 
-#: builtin/bisect--helper.c:577
+#: builtin/bisect--helper.c:582
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "réference invalide : '%s'"
 
-#: builtin/bisect--helper.c:633
+#: builtin/bisect--helper.c:638
 msgid "perform 'git bisect next'"
 msgstr "effectuer 'git bisect next'"
 
-#: builtin/bisect--helper.c:635
+#: builtin/bisect--helper.c:640
 msgid "write the terms to .git/BISECT_TERMS"
 msgstr "écrire les termes dans .git/BISECT_TERMS"
 
-#: builtin/bisect--helper.c:637
+#: builtin/bisect--helper.c:642
 msgid "cleanup the bisection state"
 msgstr "vérifier l'état de la bissection"
 
-#: builtin/bisect--helper.c:639
+#: builtin/bisect--helper.c:644
 msgid "check for expected revs"
 msgstr "vérifier si des révisions sont attendues"
 
-#: builtin/bisect--helper.c:641
+#: builtin/bisect--helper.c:646
 msgid "reset the bisection state"
 msgstr "réinitialiser l'état de la bissection"
 
-#: builtin/bisect--helper.c:643
+#: builtin/bisect--helper.c:648
 msgid "write out the bisection state in BISECT_LOG"
 msgstr "écrire l'état de la bissection dans BISECT_LOG"
 
-#: builtin/bisect--helper.c:645
+#: builtin/bisect--helper.c:650
 msgid "check and set terms in a bisection state"
 msgstr "vérifier et régler les termes dans un état de la bissection"
 
-#: builtin/bisect--helper.c:647
+#: builtin/bisect--helper.c:652
 msgid "check whether bad or good terms exist"
 msgstr "vérifier si les termes bons ou mauvais existent"
 
-#: builtin/bisect--helper.c:649
+#: builtin/bisect--helper.c:654
 msgid "print out the bisect terms"
 msgstr "afficher les termes de bissection"
 
-#: builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:656
 msgid "start the bisect session"
 msgstr "démarrer une session de bissection"
 
-#: builtin/bisect--helper.c:653
+#: builtin/bisect--helper.c:658
 msgid "update BISECT_HEAD instead of checking out the current commit"
 msgstr "mettre à jour BISECT_HEAD au lieu d'extraire le commit actuel"
 
-#: builtin/bisect--helper.c:655
+#: builtin/bisect--helper.c:660
 msgid "no log for BISECT_WRITE"
 msgstr "pas de journal pour BISECT_WRITE"
 
-#: builtin/bisect--helper.c:673
+#: builtin/bisect--helper.c:678
 msgid "--write-terms requires two arguments"
 msgstr "--write-terms exige deux arguments"
 
-#: builtin/bisect--helper.c:677
+#: builtin/bisect--helper.c:682
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state ne supporte aucun argument"
 
-#: builtin/bisect--helper.c:684
+#: builtin/bisect--helper.c:689
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset supporte soit aucun argument, soit un commit"
 
-#: builtin/bisect--helper.c:688
+#: builtin/bisect--helper.c:693
 msgid "--bisect-write requires either 4 or 5 arguments"
 msgstr "--bisect-write supporte soit 4 arguments, soit 5 arguments"
 
-#: builtin/bisect--helper.c:694
+#: builtin/bisect--helper.c:699
 msgid "--check-and-set-terms requires 3 arguments"
 msgstr "--check-and-set-terms exige 3 arguments"
 
-#: builtin/bisect--helper.c:700
+#: builtin/bisect--helper.c:705
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check exige 2 ou 3 arguments"
 
-#: builtin/bisect--helper.c:706
+#: builtin/bisect--helper.c:711
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms exige 0 ou 1 argument"
 
@@ -11233,19 +11346,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <fichier> [<nom-de-ref>...]"
 
-#: builtin/bundle.c:66 builtin/pack-objects.c:3376
+#: builtin/bundle.c:66 builtin/pack-objects.c:3448
 msgid "do not show progress meter"
 msgstr "ne pas afficher la barre de progression"
 
-#: builtin/bundle.c:68 builtin/pack-objects.c:3378
+#: builtin/bundle.c:68 builtin/pack-objects.c:3450
 msgid "show progress meter"
 msgstr "afficher la barre de progression"
 
-#: builtin/bundle.c:70 builtin/pack-objects.c:3380
+#: builtin/bundle.c:70 builtin/pack-objects.c:3452
 msgid "show progress meter during object writing phase"
 msgstr "afficher la barre de progression durant la phase d'écrite des objets"
 
-#: builtin/bundle.c:73 builtin/pack-objects.c:3383
+#: builtin/bundle.c:73 builtin/pack-objects.c:3455
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "similaire à --all-progress quand la barre de progression est affichée"
 
@@ -11285,11 +11398,9 @@
 
 #: builtin/cat-file.c:599
 msgid ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
-msgstr ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"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
 msgid "only one batch option may be specified"
@@ -11323,7 +11434,7 @@
 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 git-submodule.sh:984
+#: builtin/cat-file.c:648 git-submodule.sh:958
 msgid "blob"
 msgstr "blob"
 
@@ -11387,8 +11498,8 @@
 msgstr ""
 "terminer les enregistrements en entrée et en sortie par un caractère NUL"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1488 builtin/gc.c:537
-#: builtin/worktree.c:502
+#: builtin/check-ignore.c:21 builtin/checkout.c:1486 builtin/gc.c:537
+#: builtin/worktree.c:561
 msgid "suppress progress reporting"
 msgstr "supprimer l'état d'avancement"
 
@@ -11482,7 +11593,7 @@
 #: builtin/checkout-index.c:178 builtin/column.c:31
 #: builtin/submodule--helper.c:1400 builtin/submodule--helper.c:1403
 #: builtin/submodule--helper.c:1411 builtin/submodule--helper.c:1909
-#: builtin/worktree.c:675
+#: builtin/worktree.c:754
 msgid "string"
 msgstr "chaîne"
 
@@ -11599,11 +11710,11 @@
 msgid "path '%s' is unmerged"
 msgstr "le chemin '%s' n'est pas fusionné"
 
-#: builtin/checkout.c:704
+#: builtin/checkout.c:702
 msgid "you need to resolve your current index first"
 msgstr "vous devez d'abord résoudre votre index courant"
 
-#: builtin/checkout.c:758
+#: builtin/checkout.c:756
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11613,50 +11724,50 @@
 "suivants :\n"
 "%s"
 
-#: builtin/checkout.c:861
+#: builtin/checkout.c:859
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Impossible de faire un reflog pour '%s' : %s\n"
 
-#: builtin/checkout.c:903
+#: builtin/checkout.c:901
 msgid "HEAD is now at"
 msgstr "HEAD est maintenant sur"
 
-#: builtin/checkout.c:907 builtin/clone.c:720
+#: builtin/checkout.c:905 builtin/clone.c:720
 msgid "unable to update HEAD"
 msgstr "impossible de mettre à jour HEAD"
 
-#: builtin/checkout.c:911
+#: builtin/checkout.c:909
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Remise à zéro de la branche '%s'\n"
 
-#: builtin/checkout.c:914
+#: builtin/checkout.c:912
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Déjà sur '%s'\n"
 
-#: builtin/checkout.c:918
+#: builtin/checkout.c:916
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Basculement et remise à zéro de la branche '%s'\n"
 
-#: builtin/checkout.c:920 builtin/checkout.c:1344
+#: builtin/checkout.c:918 builtin/checkout.c:1342
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Basculement sur la nouvelle branche '%s'\n"
 
-#: builtin/checkout.c:922
+#: builtin/checkout.c:920
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Basculement sur la branche '%s'\n"
 
-#: builtin/checkout.c:973
+#: builtin/checkout.c:971
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... et %d en plus.\n"
 
-#: builtin/checkout.c:979
+#: builtin/checkout.c:977
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11679,7 +11790,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:996
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11708,19 +11819,19 @@
 "git branch <nouvelle-branche> %s\n"
 "\n"
 
-#: builtin/checkout.c:1033
+#: builtin/checkout.c:1031
 msgid "internal error in revision walk"
 msgstr "erreur interne lors du parcours des révisions"
 
-#: builtin/checkout.c:1037
+#: builtin/checkout.c:1035
 msgid "Previous HEAD position was"
 msgstr "La position précédente de HEAD était sur"
 
-#: builtin/checkout.c:1077 builtin/checkout.c:1339
+#: builtin/checkout.c:1075 builtin/checkout.c:1337
 msgid "You are on a branch yet to be born"
 msgstr "Vous êtes sur une branche qui doit encore naître"
 
-#: builtin/checkout.c:1152
+#: builtin/checkout.c:1150
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11729,7 +11840,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:1159
+#: builtin/checkout.c:1157
 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"
@@ -11749,51 +11860,51 @@
 "ambigu, vous pouvez positionner checkout.defaultRemote=origin dans\n"
 "votre config."
 
-#: builtin/checkout.c:1169
+#: builtin/checkout.c:1167
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' correspond à plusieurs (%d) branches de suivi à distance"
 
-#: builtin/checkout.c:1235
+#: builtin/checkout.c:1233
 msgid "only one reference expected"
 msgstr "une seule référence attendue"
 
-#: builtin/checkout.c:1252
+#: builtin/checkout.c:1250
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "une seule référence attendue, %d fournies."
 
-#: builtin/checkout.c:1298 builtin/worktree.c:283 builtin/worktree.c:451
+#: builtin/checkout.c:1296 builtin/worktree.c:342 builtin/worktree.c:510
 #, c-format
 msgid "invalid reference: %s"
 msgstr "référence invalide : %s"
 
-#: builtin/checkout.c:1311 builtin/checkout.c:1677
+#: builtin/checkout.c:1309 builtin/checkout.c:1675
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "la référence n'est pas un arbre : %s"
 
-#: builtin/checkout.c:1358
+#: builtin/checkout.c:1356
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "branche attendue, mais étiquette '%s' reçue"
 
-#: builtin/checkout.c:1360
+#: builtin/checkout.c:1358
 #, 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:1361 builtin/checkout.c:1369
+#: builtin/checkout.c:1359 builtin/checkout.c:1367
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "une branche est attendue, mais '%s' a été reçue"
 
-#: builtin/checkout.c:1364
+#: builtin/checkout.c:1362
 #, 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:1380
+#: builtin/checkout.c:1378
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11801,7 +11912,7 @@
 "impossible de basculer de branche pendant une fusion\n"
 "Envisagez \"git merge --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1384
+#: builtin/checkout.c:1382
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11809,7 +11920,7 @@
 "impossible de basculer de branche pendant une session am\n"
 "Envisagez \"git am --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1388
+#: builtin/checkout.c:1386
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11817,7 +11928,7 @@
 "impossible de basculer de branche pendant un rebasage\n"
 "Envisagez \"git rebase --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1390
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11825,7 +11936,7 @@
 "impossible de basculer de branche pendant un picorage\n"
 "Envisagez \"git cherry-pick --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1394
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11833,146 +11944,146 @@
 "impossible de basculer de branche pendant un retour\n"
 "Envisagez \"git revert --quit\" ou \"git worktree add\"."
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1398
 msgid "you are switching branch while bisecting"
 msgstr "Vous basculez de branche en cours de bissection"
 
-#: builtin/checkout.c:1407
+#: builtin/checkout.c:1405
 msgid "paths cannot be used with switching branches"
 msgstr "impossible d'utiliser des chemins avec un basculement de branches"
 
-#: builtin/checkout.c:1410 builtin/checkout.c:1414 builtin/checkout.c:1418
+#: builtin/checkout.c:1408 builtin/checkout.c:1412 builtin/checkout.c:1416
 #, 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:1422 builtin/checkout.c:1425 builtin/checkout.c:1428
-#: builtin/checkout.c:1433 builtin/checkout.c:1438
+#: builtin/checkout.c:1420 builtin/checkout.c:1423 builtin/checkout.c:1426
+#: builtin/checkout.c:1431 builtin/checkout.c:1436
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' ne peut pas être utilisé avec '%s'"
 
-#: builtin/checkout.c:1435
+#: builtin/checkout.c:1433
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' n'accepte pas <point-de-départ>"
 
-#: builtin/checkout.c:1443
+#: builtin/checkout.c:1441
 #, 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:1450
+#: builtin/checkout.c:1448
 msgid "missing branch or commit argument"
 msgstr "argument de branche ou de commit manquant"
 
-#: builtin/checkout.c:1492 builtin/clone.c:91 builtin/commit-graph.c:80
-#: builtin/commit-graph.c:164 builtin/fetch.c:168 builtin/merge.c:288
+#: builtin/checkout.c:1490 builtin/clone.c:91 builtin/commit-graph.c:82
+#: builtin/commit-graph.c:189 builtin/fetch.c:168 builtin/merge.c:288
 #: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:561
 #: builtin/send-pack.c:173
 msgid "force progress reporting"
 msgstr "forcer l'affichage de l'état d'avancement"
 
-#: builtin/checkout.c:1493
+#: builtin/checkout.c:1491
 msgid "perform a 3-way merge with the new branch"
 msgstr "effectuer une fusion à 3 points avec la nouvelle branche"
 
-#: builtin/checkout.c:1494 builtin/log.c:1709 parse-options.h:322
+#: builtin/checkout.c:1492 builtin/log.c:1709 parse-options.h:322
 msgid "style"
 msgstr "style"
 
-#: builtin/checkout.c:1495
+#: builtin/checkout.c:1493
 msgid "conflict style (merge or diff3)"
 msgstr "style de conflit (merge (fusion) ou diff3)"
 
-#: builtin/checkout.c:1507 builtin/worktree.c:499
+#: builtin/checkout.c:1505 builtin/worktree.c:558
 msgid "detach HEAD at named commit"
 msgstr "détacher la HEAD au commit nommé"
 
-#: builtin/checkout.c:1508
+#: builtin/checkout.c:1506
 msgid "set upstream info for new branch"
 msgstr "paramétrer les coordonnées de branche amont pour une nouvelle branche"
 
-#: builtin/checkout.c:1510
+#: builtin/checkout.c:1508
 msgid "force checkout (throw away local modifications)"
 msgstr "forcer l'extraction (laisser tomber les modifications locales)"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new-branch"
 msgstr "nouvelle branche"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new unparented branch"
 msgstr "nouvelle branche sans parent"
 
-#: builtin/checkout.c:1514 builtin/merge.c:292
+#: builtin/checkout.c:1512 builtin/merge.c:292
 msgid "update ignored files (default)"
 msgstr "mettre à jour les fichiers ignorés (par défaut)"
 
-#: builtin/checkout.c:1517
+#: builtin/checkout.c:1515
 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"
 
-#: builtin/checkout.c:1530
+#: builtin/checkout.c:1528
 msgid "checkout our version for unmerged files"
 msgstr "extraire notre version pour les fichiers non fusionnés"
 
-#: builtin/checkout.c:1533
+#: builtin/checkout.c:1531
 msgid "checkout their version for unmerged files"
 msgstr "extraire leur version pour les fichiers non fusionnés"
 
-#: builtin/checkout.c:1537
+#: builtin/checkout.c:1535
 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:1592
+#: builtin/checkout.c:1590
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c et --orphan sont mutuellement exclusifs"
 
-#: builtin/checkout.c:1596
+#: builtin/checkout.c:1594
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p et --overlay sont mutuellement exclusifs"
 
-#: builtin/checkout.c:1633
+#: builtin/checkout.c:1631
 msgid "--track needs a branch name"
 msgstr "--track requiert un nom de branche"
 
-#: builtin/checkout.c:1638
+#: builtin/checkout.c:1636
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "nom de branche manquant ; essayez -%c"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "could not resolve %s"
 msgstr "impossible de résoudre %s"
 
-#: builtin/checkout.c:1686
+#: builtin/checkout.c:1684
 msgid "invalid path specification"
 msgstr "spécification de chemin invalide"
 
-#: builtin/checkout.c:1693
+#: builtin/checkout.c:1691
 #, 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"
 
-#: builtin/checkout.c:1697
+#: builtin/checkout.c:1695
 #, 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:1706
+#: builtin/checkout.c:1704
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file est incompatible avec --detach"
 
-#: builtin/checkout.c:1709 builtin/reset.c:325 builtin/stash.c:1503
+#: builtin/checkout.c:1707 builtin/reset.c:325 builtin/stash.c:1503
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file est incompatible avec --patch"
 
-#: builtin/checkout.c:1720
+#: builtin/checkout.c:1718
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -11980,70 +12091,71 @@
 "git checkout: --ours/--theirs, --force et --merge sont incompatibles lors\n"
 "de l'extraction de l'index."
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 msgid "you must specify path(s) to restore"
 msgstr "Vous devez spécifier un ou des chemins à restaurer"
 
-#: builtin/checkout.c:1751 builtin/checkout.c:1753 builtin/checkout.c:1802
-#: builtin/checkout.c:1804 builtin/clone.c:121 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/worktree.c:495 builtin/worktree.c:497
+#: builtin/checkout.c:1749 builtin/checkout.c:1751 builtin/checkout.c:1800
+#: builtin/checkout.c:1802 builtin/clone.c:121 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2295 builtin/worktree.c:554
+#: builtin/worktree.c:556
 msgid "branch"
 msgstr "branche"
 
-#: builtin/checkout.c:1752
+#: builtin/checkout.c:1750
 msgid "create and checkout a new branch"
 msgstr "créer et extraire une nouvelle branche"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid "create/reset and checkout a branch"
 msgstr "créer/réinitialiser et extraire une branche"
 
-#: builtin/checkout.c:1755
+#: builtin/checkout.c:1753
 msgid "create reflog for new branch"
 msgstr "créer un reflog pour une nouvelle branche"
 
-#: builtin/checkout.c:1757
+#: builtin/checkout.c:1755
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr ""
 "essayer d'interpréter 'git checkout <branche-inexistante>' (par défaut)"
 
-#: builtin/checkout.c:1758
+#: builtin/checkout.c:1756
 msgid "use overlay mode (default)"
 msgstr "utiliser le mode de superposition (défaut)"
 
-#: builtin/checkout.c:1803
+#: builtin/checkout.c:1801
 msgid "create and switch to a new branch"
 msgstr "créer et basculer sur une nouvelle branche"
 
-#: builtin/checkout.c:1805
+#: builtin/checkout.c:1803
 msgid "create/reset and switch to a branch"
 msgstr "créer/réinitialiser et basculer sur une branche"
 
-#: builtin/checkout.c:1807
+#: builtin/checkout.c:1805
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "interpréter 'git switch <branche-inexistante>'"
 
-#: builtin/checkout.c:1809
+#: builtin/checkout.c:1807
 msgid "throw away local modifications"
 msgstr "laisser tomber les modifications locales"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "which tree-ish to checkout from"
 msgstr "de quel <arbre-esque> faire l'extraction"
 
-#: builtin/checkout.c:1845
+#: builtin/checkout.c:1843
 msgid "restore the index"
 msgstr "restaurer l'index"
 
-#: builtin/checkout.c:1847
+#: builtin/checkout.c:1845
 msgid "restore the working tree (default)"
 msgstr "restaurer l'arbre de travail (par défaut)"
 
-#: builtin/checkout.c:1849
+#: builtin/checkout.c:1847
 msgid "ignore unmerged entries"
 msgstr "ignorer les entrées non-fusionnées"
 
-#: builtin/checkout.c:1850
+#: builtin/checkout.c:1848
 msgid "use overlay mode"
 msgstr "utiliser le mode de superposition"
 
@@ -12206,11 +12318,7 @@
 msgid "remove only ignored files"
 msgstr "supprimer seulement les fichiers ignorés"
 
-#: builtin/clean.c:931
-msgid "-x and -X cannot be used together"
-msgstr "-x et -X ne peuvent pas être utilisés ensemble"
-
-#: builtin/clean.c:935
+#: builtin/clean.c:929
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -12218,7 +12326,7 @@
 "clean.requireForce positionné à true et ni -i, -n ou -f fourni ; refus de "
 "nettoyer"
 
-#: builtin/clean.c:938
+#: builtin/clean.c:932
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -12226,6 +12334,10 @@
 "clean.requireForce à true par défaut et ni -i, -n ou -f fourni ; refus de "
 "nettoyer"
 
+#: builtin/clean.c:944
+msgid "-x and -X cannot be used together"
+msgstr "-x et -X ne peuvent pas être utilisés ensemble"
+
 #: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<options>] [--] <dépôt> [<répertoire>]"
@@ -12234,7 +12346,7 @@
 msgid "don't create a checkout"
 msgstr "ne pas créer d'extraction"
 
-#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:536
+#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:554
 msgid "create a bare repository"
 msgstr "créer un dépôt nu"
 
@@ -12266,11 +12378,11 @@
 msgid "number of submodules cloned in parallel"
 msgstr "nombre de sous-modules clonés en parallèle"
 
-#: builtin/clone.c:111 builtin/init-db.c:533
+#: builtin/clone.c:111 builtin/init-db.c:551
 msgid "template-directory"
 msgstr "répertoire-modèle"
 
-#: builtin/clone.c:112 builtin/init-db.c:534
+#: builtin/clone.c:112 builtin/init-db.c:552
 msgid "directory from which templates will be used"
 msgstr "répertoire depuis lequel les modèles vont être utilisés"
 
@@ -12284,8 +12396,8 @@
 msgid "use --reference only while cloning"
 msgstr "utiliser seulement --reference pour cloner"
 
-#: builtin/clone.c:119 builtin/column.c:27 builtin/merge-file.c:46
-#: builtin/pack-objects.c:3442 builtin/repack.c:329
+#: builtin/clone.c:119 builtin/column.c:27 builtin/init-db.c:562
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3514 builtin/repack.c:329
 msgid "name"
 msgstr "nom"
 
@@ -12310,7 +12422,7 @@
 msgid "create a shallow clone of that depth"
 msgstr "créer un clone superficiel de cette profondeur"
 
-#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3431
+#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3503
 #: builtin/pull.c:211
 msgid "time"
 msgstr "heure"
@@ -12344,11 +12456,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "tous les sous-modules clonés seront superficiels"
 
-#: builtin/clone.c:137 builtin/init-db.c:542
+#: builtin/clone.c:137 builtin/init-db.c:560
 msgid "gitdir"
 msgstr "gitdir"
 
-#: builtin/clone.c:138 builtin/init-db.c:543
+#: builtin/clone.c:138 builtin/init-db.c:561
 msgid "separate git dir from working tree"
 msgstr "séparer le répertoire git de la copie de travail"
 
@@ -12480,7 +12592,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "impossible de délier le fichier temporaire alternates"
 
-#: builtin/clone.c:971 builtin/receive-pack.c:1972
+#: builtin/clone.c:971 builtin/receive-pack.c:1982
 msgid "Too many arguments."
 msgstr "Trop d'arguments."
 
@@ -12497,49 +12609,49 @@
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare et --separate-git-dir sont incompatibles."
 
-#: builtin/clone.c:1004
+#: builtin/clone.c:1007
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "le dépôt '%s' n'existe pas"
 
-#: builtin/clone.c:1010 builtin/fetch.c:1789
+#: builtin/clone.c:1011 builtin/fetch.c:1794
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "la profondeur %s n'est pas un entier positif"
 
-#: builtin/clone.c:1020
+#: builtin/clone.c:1021
 #, 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."
 
-#: builtin/clone.c:1030
+#: builtin/clone.c:1033
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "la copie de travail '%s' existe déjà."
 
-#: builtin/clone.c:1045 builtin/clone.c:1066 builtin/difftool.c:271
-#: builtin/log.c:1886 builtin/worktree.c:295 builtin/worktree.c:327
+#: builtin/clone.c:1048 builtin/clone.c:1069 builtin/difftool.c:271
+#: builtin/log.c:1886 builtin/worktree.c:354 builtin/worktree.c:386
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "impossible de créer les répertoires de premier niveau dans '%s'"
 
-#: builtin/clone.c:1050
+#: builtin/clone.c:1053
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "impossible de créer le répertoire de la copie de travail '%s'"
 
-#: builtin/clone.c:1070
+#: builtin/clone.c:1073
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Clonage dans le dépôt nu '%s'\n"
 
-#: builtin/clone.c:1072
+#: builtin/clone.c:1075
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Clonage dans '%s'...\n"
 
-#: builtin/clone.c:1096
+#: builtin/clone.c:1099
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -12547,41 +12659,41 @@
 "clone --recursive n'est pas compatible avec à la fois --reference et --"
 "reference-if-able"
 
-#: builtin/clone.c:1160
+#: builtin/clone.c:1164
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr ""
 "--depth est ignoré dans les clones locaux : utilisez plutôt \"file://\"."
 
-#: builtin/clone.c:1162
+#: builtin/clone.c:1166
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-since est ignoré dans les clones locaux : utilisez plutôt \"file://"
 "\"."
 
-#: builtin/clone.c:1164
+#: builtin/clone.c:1168
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-exclude est ignoré dans les clones locaux : utilisez plutôt "
 "\"file://\"."
 
-#: builtin/clone.c:1166
+#: builtin/clone.c:1170
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--filter est ignoré dans les clones locaux ; utilisez plutôt file:// ."
 
-#: builtin/clone.c:1169
+#: builtin/clone.c:1173
 msgid "source repository is shallow, ignoring --local"
 msgstr "le dépôt source est superficiel, option --local ignorée"
 
-#: builtin/clone.c:1174
+#: builtin/clone.c:1178
 msgid "--local is ignored"
 msgstr "--local est ignoré"
 
-#: builtin/clone.c:1249 builtin/clone.c:1257
+#: builtin/clone.c:1262 builtin/clone.c:1270
 #, 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:1260
+#: builtin/clone.c:1273
 msgid "You appear to have cloned an empty repository."
 msgstr "Vous semblez avoir cloné un dépôt vide."
 
@@ -12617,95 +12729,107 @@
 msgid "--command must be the first argument"
 msgstr "--command doit être le premier argument"
 
-#: builtin/commit-graph.c:11 builtin/commit-graph.c:19
+#: builtin/commit-graph.c:13 builtin/commit-graph.c:21
 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:12 builtin/commit-graph.c:24
+#: builtin/commit-graph.c:14 builtin/commit-graph.c:26
 msgid ""
 "git commit-graph write [--object-dir <objdir>] [--append] [--"
 "split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
 "paths] [--[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-]progress] <options de division>"
+msgstr ""
+"git commit-graph write [--object-dir <répertoire-d'objet>] [--append] [--"
+"split[=<stratégie>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
+"paths] [--[no-]progress] <options de division>"
 
-#: builtin/commit-graph.c:60
+#: builtin/commit-graph.c:62
 #, c-format
 msgid "could not find object directory matching %s"
 msgstr "impossible de trouver le répertoire objet correspondant à %s"
 
-#: builtin/commit-graph.c:76 builtin/commit-graph.c:152
-#: builtin/commit-graph.c:257 builtin/fetch.c:180 builtin/log.c:1678
+#: builtin/commit-graph.c:78 builtin/commit-graph.c:177
+#: builtin/commit-graph.c:276 builtin/fetch.c:180 builtin/log.c:1678
 msgid "dir"
 msgstr "répertoire"
 
-#: builtin/commit-graph.c:77 builtin/commit-graph.c:153
-#: builtin/commit-graph.c:258
+#: builtin/commit-graph.c:79 builtin/commit-graph.c:178
+#: builtin/commit-graph.c:277
 msgid "The object directory to store the graph"
 msgstr "Le répertoire d'objet où stocker le graphe"
 
-#: builtin/commit-graph.c:79
+#: builtin/commit-graph.c:81
 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"
 
-#: builtin/commit-graph.c:102
+#: builtin/commit-graph.c:104
 #, c-format
 msgid "Could not open commit-graph '%s'"
 msgstr "impossible d'ouvrir le graphe de commit '%s'"
 
-#: builtin/commit-graph.c:136
+#: builtin/commit-graph.c:138
 #, c-format
 msgid "unrecognized --split argument, %s"
 msgstr "argument de --split non reconnu, %s"
 
-#: builtin/commit-graph.c:155
+#: builtin/commit-graph.c:151
+#, c-format
+msgid "unexpected non-hex object ID: %s"
+msgstr "ID d'objet non hexadécimal inattendu : %s"
+
+#: builtin/commit-graph.c:156
+#, c-format
+msgid "invalid object: %s"
+msgstr "objet invalide : %s"
+
+#: builtin/commit-graph.c:180
 msgid "start walk at all refs"
 msgstr "commencer le parcours à toutes les réfs"
 
-#: builtin/commit-graph.c:157
+#: builtin/commit-graph.c:182
 msgid "scan pack-indexes listed by stdin for commits"
 msgstr "scanner les index compactés listés sur stdin à la recherche de commits"
 
-#: builtin/commit-graph.c:159
+#: builtin/commit-graph.c:184
 msgid "start walk at commits listed by stdin"
 msgstr "commencer le parcours aux commits listés sur stdin"
 
-#: builtin/commit-graph.c:161
+#: builtin/commit-graph.c:186
 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"
 
-#: builtin/commit-graph.c:163
+#: builtin/commit-graph.c:188
 msgid "enable computation for changed paths"
 msgstr "activer le calcul pour les chemins modifiés"
 
-#: builtin/commit-graph.c:166
+#: builtin/commit-graph.c:191
 msgid "allow writing an incremental commit-graph file"
 msgstr "permettre d'écrire un fichier incrémental de graphe de commit"
 
-#: builtin/commit-graph.c:170
+#: builtin/commit-graph.c:195
 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"
 
-#: builtin/commit-graph.c:172
+#: builtin/commit-graph.c:197
 msgid "maximum ratio between two levels of a split commit-graph"
 msgstr "rapport maximum entre deux niveaux d'un graphe de commit divisé"
 
-#: builtin/commit-graph.c:174
+#: builtin/commit-graph.c:199
 msgid "only expire files older than a given date-time"
 msgstr "ne faire expirer que les fichiers plus vieux qu'une date-time donnée"
 
-#: builtin/commit-graph.c:190
+#: builtin/commit-graph.c:215
 msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
 msgstr "utilisez un seul parmi --reachable, --stdin-commits ou --stdin-packs"
 
-#: builtin/commit-graph.c:229
-#, c-format
-msgid "unexpected non-hex object ID: %s"
-msgstr "ID d'objet non hexadécimal inattendu : %s"
+#: builtin/commit-graph.c:245
+msgid "Collecting commits from input"
+msgstr "Collecte des commits depuis l'entrée"
 
 #: builtin/commit-tree.c:18
 msgid ""
@@ -13112,7 +13236,7 @@
 msgstr "version"
 
 #: builtin/commit.c:1376 builtin/commit.c:1535 builtin/push.c:549
-#: builtin/worktree.c:646
+#: builtin/worktree.c:722
 msgid "machine-readable output"
 msgstr "sortie pour traitement automatique"
 
@@ -13125,8 +13249,8 @@
 msgstr "terminer les éléments par NUL"
 
 #: builtin/commit.c:1384 builtin/commit.c:1388 builtin/commit.c:1543
-#: builtin/fast-export.c:1153 builtin/fast-export.c:1156
-#: builtin/fast-export.c:1159 builtin/rebase.c:1392 parse-options.h:336
+#: builtin/fast-export.c:1199 builtin/fast-export.c:1202
+#: builtin/fast-export.c:1205 builtin/rebase.c:1392 parse-options.h:336
 msgid "mode"
 msgstr "mode"
 
@@ -13824,35 +13948,45 @@
 msgid "--broken is incompatible with commit-ishes"
 msgstr "--broken est incompatible avec les commits ou assimilés"
 
-#: builtin/diff.c:84
+#: builtin/diff.c:91
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s' : n'est pas un fichier régulier ni un lien symbolique"
 
-#: builtin/diff.c:235
+#: builtin/diff.c:242
 #, c-format
 msgid "invalid option: %s"
 msgstr "option invalide : %s"
 
-#: builtin/diff.c:350
+#: builtin/diff.c:359
+#, c-format
+msgid "%s...%s: no merge base"
+msgstr "%s..%s: pas de base de fusion"
+
+#: builtin/diff.c:469
 msgid "Not a git repository"
 msgstr "Ce n'est pas un dépôt git !"
 
-#: builtin/diff.c:394
+#: builtin/diff.c:514
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "objet spécifié '%s' invalide."
 
-#: builtin/diff.c:403
+#: builtin/diff.c:525
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "plus de deux blobs spécifiés : '%s'"
 
-#: builtin/diff.c:408
+#: builtin/diff.c:530
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "objet non géré '%s' spécifié."
 
+#: builtin/diff.c:564
+#, c-format
+msgid "%s...%s: multiple merge bases, using %s"
+msgstr "\"%s...%s\" : bases multiples de fusion, utilisation de %s"
+
 #: builtin/difftool.c:30
 msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
 msgstr "git difftool [<options>] [<commit> [<commit>]] [--] [<chemin>...]"
@@ -14004,90 +14138,111 @@
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [options-de-liste-de-révisions]"
 
-#: builtin/fast-export.c:853
+#: 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é."
 
-#: builtin/fast-export.c:1152
+#: builtin/fast-export.c:1178
+msgid "--anonymize-map token cannot be empty"
+msgstr "le jeton --anonymize-map ne peut pas être vide"
+
+#: builtin/fast-export.c:1198
 msgid "show progress after <n> objects"
 msgstr "afficher la progression après <n> objets"
 
-#: builtin/fast-export.c:1154
+#: builtin/fast-export.c:1200
 msgid "select handling of signed tags"
 msgstr "sélectionner la gestion des étiquettes signées"
 
-#: builtin/fast-export.c:1157
+#: builtin/fast-export.c:1203
 msgid "select handling of tags that tag filtered objects"
 msgstr ""
 "sélectionner la gestion des étiquettes qui pointent sur des objets filtrés"
 
-#: builtin/fast-export.c:1160
+#: builtin/fast-export.c:1206
 msgid "select handling of commit messages in an alternate encoding"
 msgstr ""
 "sélectionner la gestion des messages de validation dans un encodage "
 "alternatif"
 
-#: builtin/fast-export.c:1163
+#: builtin/fast-export.c:1209
 msgid "Dump marks to this file"
 msgstr "Enregistrer les marques dans ce fichier"
 
-#: builtin/fast-export.c:1165
+#: builtin/fast-export.c:1211
 msgid "Import marks from this file"
 msgstr "importer les marques depuis ce fichier"
 
-#: builtin/fast-export.c:1169
+#: builtin/fast-export.c:1215
 msgid "Import marks from this file if it exists"
 msgstr "importer les marques depuis ce fichier s'il existe"
 
-#: builtin/fast-export.c:1171
+#: builtin/fast-export.c:1217
 msgid "Fake a tagger when tags lack one"
 msgstr "falsifier un auteur d'étiquette si l'étiquette n'en présente pas"
 
-#: builtin/fast-export.c:1173
+#: builtin/fast-export.c:1219
 msgid "Output full tree for each commit"
 msgstr "Afficher l'arbre complet pour chaque commit"
 
-#: builtin/fast-export.c:1175
+#: builtin/fast-export.c:1221
 msgid "Use the done feature to terminate the stream"
 msgstr "Utiliser la fonction \"done\" pour terminer le flux"
 
-#: builtin/fast-export.c:1176
+#: builtin/fast-export.c:1222
 msgid "Skip output of blob data"
 msgstr "Sauter l'affichage de données de blob"
 
-#: builtin/fast-export.c:1177 builtin/log.c:1724
+#: builtin/fast-export.c:1223 builtin/log.c:1724
 msgid "refspec"
 msgstr "spécificateur de référence"
 
-#: builtin/fast-export.c:1178
+#: builtin/fast-export.c:1224
 msgid "Apply refspec to exported refs"
 msgstr "Appliquer le spécificateur de référence aux références exportées"
 
-#: builtin/fast-export.c:1179
+#: builtin/fast-export.c:1225
 msgid "anonymize output"
 msgstr "anonymise la sortie"
 
-#: builtin/fast-export.c:1181
+#: builtin/fast-export.c:1226
+msgid "from:to"
+msgstr "depuis:vers"
+
+#: builtin/fast-export.c:1227
+msgid "convert <from> to <to> in anonymized output"
+msgstr "convertit <depuis> en <vers> dans la sortie anonymisée"
+
+#: builtin/fast-export.c:1230
 msgid "Reference parents which are not in fast-export stream by object id"
 msgstr ""
 "les parents références qui ne sont pas dans le flux d'export rapide par id "
 "d'objet"
 
-#: builtin/fast-export.c:1183
+#: builtin/fast-export.c:1232
 msgid "Show original object ids of blobs/commits"
 msgstr "Afficher les ids d'objet originaux des blobs/commits"
 
-#: builtin/fast-export.c:1185
+#: builtin/fast-export.c:1234
 msgid "Label tags with mark ids"
 msgstr "Marquer les étiquettes avec des ids de marque"
 
-#: builtin/fast-export.c:1220
+#: builtin/fast-export.c:1257
+msgid "--anonymize-map without --anonymize does not make sense"
+msgstr "--anonymize-map n'a aucune signification sans --anonymize"
+
+#: builtin/fast-export.c:1272
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
 msgstr ""
 "Impossible d'utiliser à la fois --import-marks et --import-marks-if-exists"
 
+#: builtin/fetch-pack.c:245
+#, c-format
+msgid "Lockfile created but not reported: %s"
+msgstr "Fichier verrou créé mais non reporté : %s"
+
 #: builtin/fetch.c:35
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<options>] [<dépôt> [<spécification-de-référence>...]]"
@@ -14416,42 +14571,42 @@
 msgid "You need to specify a tag name."
 msgstr "Vous devez spécifier un nom d'étiquette."
 
-#: builtin/fetch.c:1773
+#: builtin/fetch.c:1778
 msgid "Negative depth in --deepen is not supported"
 msgstr "Une profondeur négative dans --deepen n'est pas supportée"
 
-#: builtin/fetch.c:1775
+#: builtin/fetch.c:1780
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen et --depth sont mutuellement exclusifs"
 
-#: builtin/fetch.c:1780
+#: builtin/fetch.c:1785
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth et --unshallow ne peuvent pas être utilisés ensemble"
 
-#: builtin/fetch.c:1782
+#: builtin/fetch.c:1787
 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:1798
+#: builtin/fetch.c:1800
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all n'accepte pas d'argument de dépôt"
 
-#: builtin/fetch.c:1800
+#: builtin/fetch.c:1802
 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:1809
+#: builtin/fetch.c:1811
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "distant ou groupe distant inexistant : %s"
 
-#: builtin/fetch.c:1816
+#: builtin/fetch.c:1818
 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"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1836
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14911,8 +15066,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1730
-#: builtin/pack-objects.c:2855
+#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1727
+#: builtin/pack-objects.c:2904
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "pas de support des fils, ignore %s"
@@ -15149,11 +15304,11 @@
 msgid "invalid option combination, ignoring --threads"
 msgstr "option de combinaison invalide, ignore --threads"
 
-#: builtin/grep.c:1084 builtin/pack-objects.c:3548
+#: builtin/grep.c:1084 builtin/pack-objects.c:3623
 msgid "no threads support, ignoring --threads"
 msgstr "pas de support des fils, ignore --threads"
 
-#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2852
+#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2901
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "nombre de fils spécifié invalide (%d)"
@@ -15356,7 +15511,7 @@
 msgid "used more bytes than were available"
 msgstr "plus d'octets utilisés que disponibles"
 
-#: builtin/index-pack.c:288 builtin/pack-objects.c:607
+#: builtin/index-pack.c:288 builtin/pack-objects.c:618
 msgid "pack too large for current definition of off_t"
 msgstr "le paquet est trop grand pour la définition actuelle de off_t"
 
@@ -15427,8 +15582,8 @@
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "COLLISION SHA1 TROUVÉE AVEC %s !"
 
-#: builtin/index-pack.c:738 builtin/pack-objects.c:159
-#: builtin/pack-objects.c:219 builtin/pack-objects.c:314
+#: builtin/index-pack.c:738 builtin/pack-objects.c:170
+#: builtin/pack-objects.c:230 builtin/pack-objects.c:325
 #, c-format
 msgid "unable to read %s"
 msgstr "impossible de lire %s"
@@ -15489,7 +15644,7 @@
 msgid "Resolving deltas"
 msgstr "Résolution des deltas"
 
-#: builtin/index-pack.c:1208 builtin/pack-objects.c:2616
+#: builtin/index-pack.c:1208 builtin/pack-objects.c:2665
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "impossible de créer le fil : %s"
@@ -15555,58 +15710,67 @@
 msgid "cannot store index file"
 msgstr "impossible de stocker le fichier d'index"
 
-#: builtin/index-pack.c:1528 builtin/pack-objects.c:2863
+#: builtin/index-pack.c:1528 builtin/pack-objects.c:2912
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "mauvais pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1596
+#: builtin/index-pack.c:1592
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Impossible d'ouvrir le fichier paquet existant '%s'"
 
-#: builtin/index-pack.c:1598
+#: builtin/index-pack.c:1594
 #, 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:1646
+#: builtin/index-pack.c:1642
 #, 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:1653
+#: builtin/index-pack.c:1649
 #, 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:1692
+#: builtin/index-pack.c:1689
 msgid "Cannot come back to cwd"
 msgstr "Impossible de revenir au répertoire de travail courant"
 
-#: builtin/index-pack.c:1741 builtin/index-pack.c:1744
-#: builtin/index-pack.c:1760 builtin/index-pack.c:1764
+#: builtin/index-pack.c:1738 builtin/index-pack.c:1741
+#: builtin/index-pack.c:1757 builtin/index-pack.c:1761
 #, c-format
 msgid "bad %s"
 msgstr "mauvais %s"
 
-#: builtin/index-pack.c:1780
+#: builtin/index-pack.c:1767 builtin/init-db.c:392 builtin/init-db.c:621
+#, c-format
+msgid "unknown hash algorithm '%s'"
+msgstr "algorithme d'empreinte inconnu '%s'"
+
+#: builtin/index-pack.c:1782
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin ne peut pas être utilisé sans --stdin"
 
-#: builtin/index-pack.c:1782
+#: builtin/index-pack.c:1784
 msgid "--stdin requires a git repository"
 msgstr "--stdin requiert un dépôt git"
 
-#: builtin/index-pack.c:1788
+#: builtin/index-pack.c:1786
+msgid "--object-format cannot be used with --stdin"
+msgstr "--object-format ne peut pas être utilisé avec --stdin"
+
+#: builtin/index-pack.c:1792
 msgid "--verify with no packfile name given"
 msgstr "--verify sans nom de fichier paquet donné"
 
-#: builtin/index-pack.c:1836 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1840 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "erreur de fsck dans les objets paquets"
 
@@ -15650,51 +15814,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "pas de copie des modèles depuis '%s' : %s"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:276
+#, c-format
+msgid "invalid initial branch name: '%s'"
+msgstr "Nom de branche initiale invalide : '%s'"
+
+#: builtin/init-db.c:368
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "impossible de traiter le fichier de type %d"
 
-#: builtin/init-db.c:359
+#: builtin/init-db.c:371
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "impossible de déplacer %s vers %s"
 
-#: builtin/init-db.c:374
+#: builtin/init-db.c:386
 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:380 builtin/init-db.c:601
-#, c-format
-msgid "unknown hash algorithm '%s'"
-msgstr "algorithme d'empreinte inconnu '%s'"
-
-#: builtin/init-db.c:397 builtin/init-db.c:400
+#: builtin/init-db.c:410 builtin/init-db.c:413
 #, c-format
 msgid "%s already exists"
 msgstr "%s existe déjà"
 
-#: builtin/init-db.c:458
+#: builtin/init-db.c:444
+#, c-format
+msgid "re-init: ignored --initial-branch=%s"
+msgstr "re-initialisation : --initial-branch=%s ignoré"
+
+#: builtin/init-db.c:475
 #, 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:459
+#: builtin/init-db.c:476
 #, 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:463
+#: builtin/init-db.c:480
 #, 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:464
+#: builtin/init-db.c:481
 #, 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:513
+#: builtin/init-db.c:530
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -15702,33 +15871,37 @@
 "git init [-q | --quiet] [--bare] [--template=<répertoire-modèle>] [--"
 "shared[=<permissions>]] [<répertoire>]"
 
-#: builtin/init-db.c:538
+#: builtin/init-db.c:556
 msgid "permissions"
 msgstr "permissions"
 
-#: builtin/init-db.c:539
+#: builtin/init-db.c:557
 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:544
+#: builtin/init-db.c:563
+msgid "override the name of the initial branch"
+msgstr "outrepasser le nom de la branche initiale"
+
+#: builtin/init-db.c:564
 msgid "hash"
 msgstr "empreinte"
 
-#: builtin/init-db.c:545
+#: builtin/init-db.c:565 builtin/show-index.c:22
 msgid "specify the hash algorithm to use"
 msgstr "spécifier l'algorithme d'empreinte à utiliser"
 
-#: builtin/init-db.c:578 builtin/init-db.c:583
+#: builtin/init-db.c:598 builtin/init-db.c:603
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "impossible de créer le répertoire (mkdir) %s"
 
-#: builtin/init-db.c:587
+#: builtin/init-db.c:607
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "impossible de se déplacer vers le répertoire (chdir) %s"
 
-#: builtin/init-db.c:614
+#: builtin/init-db.c:634
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -15737,7 +15910,7 @@
 "%s (ou --work-tree=<répertoire>) n'est pas autorisé sans spécifier %s (ou --"
 "git-dir=<répertoire>)"
 
-#: builtin/init-db.c:642
+#: builtin/init-db.c:662
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "Impossible d'accéder à l'arbre de travail '%s'"
@@ -17513,7 +17686,7 @@
 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:164
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
 msgid "do not remove, show only"
 msgstr "ne pas supprimer, afficher seulement"
 
@@ -17548,106 +17721,119 @@
 "git pack-objects [options...] base-name [< <liste-références> | < <liste-"
 "objets>]"
 
-#: builtin/pack-objects.c:431
+#: builtin/pack-objects.c:442
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "mauvais CRC d'objet empaqueté pour %s"
 
-#: builtin/pack-objects.c:442
+#: builtin/pack-objects.c:453
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "objet empaqueté corrompu pour %s"
 
-#: builtin/pack-objects.c:573
+#: builtin/pack-objects.c:584
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "delta récursif détecté pour l'objet %s"
 
-#: builtin/pack-objects.c:784
+#: builtin/pack-objects.c:795
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "%u objets commandés, %<PRIu32> attendus"
 
-#: builtin/pack-objects.c:973
+#: builtin/pack-objects.c:1003
 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"
 
-#: builtin/pack-objects.c:986
+#: builtin/pack-objects.c:1016
 msgid "Writing objects"
 msgstr "Écriture des objets"
 
-#: builtin/pack-objects.c:1047 builtin/update-index.c:90
+#: builtin/pack-objects.c:1077 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "échec du stat de %s"
 
-#: builtin/pack-objects.c:1100
+#: builtin/pack-objects.c:1130
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "%<PRIu32> objets écrits, %<PRIu32> attendus"
 
-#: builtin/pack-objects.c:1298
+#: builtin/pack-objects.c:1347
 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"
 
-#: builtin/pack-objects.c:1725
+#: builtin/pack-objects.c:1774
 #, 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:1734
+#: builtin/pack-objects.c:1783
 #, 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:2005
+#: builtin/pack-objects.c:2054
 msgid "Counting objects"
 msgstr "Décompte des objets"
 
-#: builtin/pack-objects.c:2150
+#: builtin/pack-objects.c:2199
 #, 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:2220 builtin/pack-objects.c:2236
-#: builtin/pack-objects.c:2246
+#: builtin/pack-objects.c:2269 builtin/pack-objects.c:2285
+#: builtin/pack-objects.c:2295
 #, c-format
 msgid "object %s cannot be read"
 msgstr "l'objet %s ne peut être lu"
 
-#: builtin/pack-objects.c:2223 builtin/pack-objects.c:2250
+#: builtin/pack-objects.c:2272 builtin/pack-objects.c:2299
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr ""
 "objet %s longueur de l'objet inconsistante (%<PRIuMAX> contre %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2260
+#: builtin/pack-objects.c:2309
 msgid "suboptimal pack - out of memory"
 msgstr "paquet sous-optimal - mémoire insuffisante"
 
-#: builtin/pack-objects.c:2575
+#: builtin/pack-objects.c:2624
 #, 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:2714
+#: builtin/pack-objects.c:2763
 #, 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:2802
+#: builtin/pack-objects.c:2851
 msgid "Compressing objects"
 msgstr "Compression des objets"
 
-#: builtin/pack-objects.c:2808
+#: builtin/pack-objects.c:2857
 msgid "inconsistency with delta count"
 msgstr "inconsistance dans le compte de delta"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2929
+#, 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)"
+
+#: builtin/pack-objects.c:2932
+#, 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)"
+
+#: builtin/pack-objects.c:2961
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -17656,7 +17842,7 @@
 "ID d'objet de bord attendu, reçu des données illisibles :\n"
 "%s"
 
-#: builtin/pack-objects.c:2895
+#: builtin/pack-objects.c:2967
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -17665,236 +17851,244 @@
 "ID d'objet attendu, reçu des données illisibles :\n"
 "%s"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3065
 msgid "invalid value for --missing"
 msgstr "valeur invalide pour --missing"
 
-#: builtin/pack-objects.c:3052 builtin/pack-objects.c:3160
+#: builtin/pack-objects.c:3124 builtin/pack-objects.c:3232
 msgid "cannot open pack index"
 msgstr "impossible d'ouvrir l'index de paquet"
 
-#: builtin/pack-objects.c:3083
+#: builtin/pack-objects.c:3155
 #, 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:3168
+#: builtin/pack-objects.c:3240
 msgid "unable to force loose object"
 msgstr "impossible de forcer l'objet libre"
 
-#: builtin/pack-objects.c:3261
+#: builtin/pack-objects.c:3333
 #, c-format
 msgid "not a rev '%s'"
 msgstr "'%s' n'est pas une révision"
 
-#: builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3336
 #, c-format
 msgid "bad revision '%s'"
 msgstr "mauvaise révision '%s'"
 
-#: builtin/pack-objects.c:3289
+#: builtin/pack-objects.c:3361
 msgid "unable to add recent objects"
 msgstr "impossible d'ajouter les objets récents"
 
-#: builtin/pack-objects.c:3342
+#: builtin/pack-objects.c:3414
 #, c-format
 msgid "unsupported index version %s"
 msgstr "version d'index non supportée %s"
 
-#: builtin/pack-objects.c:3346
+#: builtin/pack-objects.c:3418
 #, c-format
 msgid "bad index version '%s'"
 msgstr "mauvaise version d'index '%s'"
 
-#: builtin/pack-objects.c:3384
+#: builtin/pack-objects.c:3456
 msgid "<version>[,<offset>]"
 msgstr "<version>[,<décalage>]"
 
-#: builtin/pack-objects.c:3385
+#: builtin/pack-objects.c:3457
 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é"
 
-#: builtin/pack-objects.c:3388
+#: builtin/pack-objects.c:3460
 msgid "maximum size of each output pack file"
 msgstr "taille maximum de chaque fichier paquet en sortie"
 
-#: builtin/pack-objects.c:3390
+#: builtin/pack-objects.c:3462
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignorer les objets empruntés à un autre magasin d'objets"
 
-#: builtin/pack-objects.c:3392
+#: builtin/pack-objects.c:3464
 msgid "ignore packed objects"
 msgstr "ignorer les objets empaquetés"
 
-#: builtin/pack-objects.c:3394
+#: builtin/pack-objects.c:3466
 msgid "limit pack window by objects"
 msgstr "limiter la fenêtre d'empaquetage par objets"
 
-#: builtin/pack-objects.c:3396
+#: builtin/pack-objects.c:3468
 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"
 
-#: builtin/pack-objects.c:3398
+#: builtin/pack-objects.c:3470
 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"
 
-#: builtin/pack-objects.c:3400
+#: builtin/pack-objects.c:3472
 msgid "reuse existing deltas"
 msgstr "réutiliser les deltas existants"
 
-#: builtin/pack-objects.c:3402
+#: builtin/pack-objects.c:3474
 msgid "reuse existing objects"
 msgstr "réutiliser les objets existants"
 
-#: builtin/pack-objects.c:3404
+#: builtin/pack-objects.c:3476
 msgid "use OFS_DELTA objects"
 msgstr "utiliser les objets OFS_DELTA"
 
-#: builtin/pack-objects.c:3406
+#: builtin/pack-objects.c:3478
 msgid "use threads when searching for best delta matches"
 msgstr ""
 "utiliser des fils lors de la recherche pour une meilleure correspondance des "
 "deltas"
 
-#: builtin/pack-objects.c:3408
+#: builtin/pack-objects.c:3480
 msgid "do not create an empty pack output"
 msgstr "ne pas créer un paquet vide"
 
-#: builtin/pack-objects.c:3410
+#: builtin/pack-objects.c:3482
 msgid "read revision arguments from standard input"
 msgstr "lire les paramètres de révision depuis l'entrée standard"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3484
 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:3415
+#: builtin/pack-objects.c:3487
 msgid "include objects reachable from any reference"
 msgstr "inclure les objets accessibles depuis toute référence"
 
-#: builtin/pack-objects.c:3418
+#: builtin/pack-objects.c:3490
 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:3421
+#: builtin/pack-objects.c:3493
 msgid "include objects referred to by the index"
 msgstr "inclure les objets référencés par l'index"
 
-#: builtin/pack-objects.c:3424
+#: builtin/pack-objects.c:3496
 msgid "output pack to stdout"
 msgstr "afficher l'empaquetage sur la sortie standard"
 
-#: builtin/pack-objects.c:3426
+#: builtin/pack-objects.c:3498
 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:3428
+#: builtin/pack-objects.c:3500
 msgid "keep unreachable objects"
 msgstr "garder les objets inaccessibles"
 
-#: builtin/pack-objects.c:3430
+#: builtin/pack-objects.c:3502
 msgid "pack loose unreachable objects"
 msgstr "empaqueter les objets inaccessibles détachés"
 
-#: builtin/pack-objects.c:3432
+#: builtin/pack-objects.c:3504
 msgid "unpack unreachable objects newer than <time>"
 msgstr "dépaqueter les objets inaccessibles plus récents que <heure>"
 
-#: builtin/pack-objects.c:3435
+#: builtin/pack-objects.c:3507
 msgid "use the sparse reachability algorithm"
 msgstr "utiliser l'algorithme de joignabilité creuse"
 
-#: builtin/pack-objects.c:3437
+#: builtin/pack-objects.c:3509
 msgid "create thin packs"
 msgstr "créer des paquets légers"
 
-#: builtin/pack-objects.c:3439
+#: builtin/pack-objects.c:3511
 msgid "create packs suitable for shallow fetches"
 msgstr "créer des paquets permettant des récupérations superficielles"
 
-#: builtin/pack-objects.c:3441
+#: builtin/pack-objects.c:3513
 msgid "ignore packs that have companion .keep file"
 msgstr "ignorer les paquets qui ont un fichier .keep"
 
-#: builtin/pack-objects.c:3443
+#: builtin/pack-objects.c:3515
 msgid "ignore this pack"
 msgstr "ignorer ce paquet"
 
-#: builtin/pack-objects.c:3445
+#: builtin/pack-objects.c:3517
 msgid "pack compression level"
 msgstr "niveau de compression du paquet"
 
-#: builtin/pack-objects.c:3447
+#: builtin/pack-objects.c:3519
 msgid "do not hide commits by grafts"
 msgstr "ne pas cacher les validations par greffes"
 
-#: builtin/pack-objects.c:3449
+#: builtin/pack-objects.c:3521
 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"
 
-#: builtin/pack-objects.c:3451
+#: builtin/pack-objects.c:3523
 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:3455
+#: builtin/pack-objects.c:3527
 msgid "write a bitmap index if possible"
 msgstr "écrire un index de bitmap si possible"
 
-#: builtin/pack-objects.c:3459
+#: builtin/pack-objects.c:3531
 msgid "handling for missing objects"
 msgstr "gestion des objets manquants"
 
-#: builtin/pack-objects.c:3462
+#: builtin/pack-objects.c:3534
 msgid "do not pack objects in promisor packfiles"
 msgstr "ne pas empaqueter les objets dans les fichiers paquets prometteurs"
 
-#: builtin/pack-objects.c:3464
+#: builtin/pack-objects.c:3536
 msgid "respect islands during delta compression"
 msgstr "respecter les îlots pendant la compression des deltas"
 
-#: builtin/pack-objects.c:3493
+#: builtin/pack-objects.c:3538
+msgid "protocol"
+msgstr "protocole"
+
+#: builtin/pack-objects.c:3539
+msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
+msgstr "exclure tout uploadpack.blobpackfileuri configuré avec ce protocole"
+
+#: builtin/pack-objects.c:3568
 #, 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:3498
+#: builtin/pack-objects.c:3573
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit est trop grand, forcé à %d"
 
-#: builtin/pack-objects.c:3552
+#: builtin/pack-objects.c:3627
 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"
 
-#: builtin/pack-objects.c:3554
+#: builtin/pack-objects.c:3629
 msgid "minimum pack size limit is 1 MiB"
 msgstr "la taille limite minimale d'un paquet est 1 MiB"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3634
 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:3562
+#: builtin/pack-objects.c:3637
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable et --unpack-unreachable sont incompatibles"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3643
 msgid "cannot use --filter without --stdout"
 msgstr "impossible d'utiliser --filter sans --stdout"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3703
 msgid "Enumerating objects"
 msgstr "Énumération des objets"
 
-#: builtin/pack-objects.c:3658
+#: builtin/pack-objects.c:3734
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18998,7 +19192,8 @@
 
 #: builtin/rebase.c:1409
 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:1426
 msgid ""
@@ -19222,7 +19417,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <répertoire-git>"
 
-#: builtin/receive-pack.c:843
+#: builtin/receive-pack.c:844
 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"
@@ -19252,7 +19447,7 @@
 "Pour éliminer ce message et conserver le comportement par défaut,\n"
 "réglez « receive.denyCurrentBranch » à 'refuse'."
 
-#: builtin/receive-pack.c:863
+#: builtin/receive-pack.c:864
 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"
@@ -19272,11 +19467,11 @@
 "\n"
 "Pour éliminer ce message, réglez-le à 'refuse'."
 
-#: builtin/receive-pack.c:1960
+#: builtin/receive-pack.c:1970
 msgid "quiet"
 msgstr "quiet"
 
-#: builtin/receive-pack.c:1974
+#: builtin/receive-pack.c:1984
 msgid "You must specify a directory."
 msgstr "Vous devez spécifier un répertoire."
 
@@ -20856,6 +21051,14 @@
 msgid "cannot find commit %s (%s)"
 msgstr "impossible de trouver le commit %s (%s)"
 
+#: builtin/show-index.c:21
+msgid "hash-algorithm"
+msgstr "algorithme d'empreinte"
+
+#: builtin/show-index.c:31
+msgid "Unknown hash algorithm"
+msgstr "Algorithme d'empreinte inconnu"
+
 #: builtin/show-ref.c:12
 msgid ""
 "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
@@ -20915,51 +21118,55 @@
 "cet arbre de travail n'est pas partiel (le fichier sparse-checkout pourrait "
 "ne pas exister)"
 
-#: builtin/sparse-checkout.c:212
+#: builtin/sparse-checkout.c:216
 msgid "failed to create directory for sparse-checkout file"
 msgstr ""
 "échec de la création du répertoire pour le fichier d'extraction partielle"
 
-#: builtin/sparse-checkout.c:253
+#: builtin/sparse-checkout.c:257
+msgid "unable to upgrade repository format to enable worktreeConfig"
+msgstr "impossible de mettre à jour le format de dépôt pour activer worktreeConfig"
+
+#: builtin/sparse-checkout.c:259
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "échec de paramétrage extensions.worktreeConfig"
 
-#: builtin/sparse-checkout.c:270
+#: builtin/sparse-checkout.c:276
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:289
+#: builtin/sparse-checkout.c:295
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "initialiser l'extraction partielle en mode cone"
 
-#: builtin/sparse-checkout.c:326
+#: builtin/sparse-checkout.c:332
 #, c-format
 msgid "failed to open '%s'"
 msgstr "échec à l'ouverture de '%s'"
 
-#: builtin/sparse-checkout.c:383
+#: builtin/sparse-checkout.c:389
 #, c-format
 msgid "could not normalize path %s"
 msgstr "impossible de normaliser le chemin '%s'"
 
-#: builtin/sparse-checkout.c:395
+#: builtin/sparse-checkout.c:401
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <motifs>)"
 
-#: builtin/sparse-checkout.c:420
+#: builtin/sparse-checkout.c:426
 #, 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:474 builtin/sparse-checkout.c:498
+#: builtin/sparse-checkout.c:480 builtin/sparse-checkout.c:504
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "impossible de charger les motifs de l'extraction partielle existants"
 
-#: builtin/sparse-checkout.c:543
+#: builtin/sparse-checkout.c:549
 msgid "read patterns from standard in"
 msgstr "lire les motifs depuis l'entrée standard"
 
-#: builtin/sparse-checkout.c:580
+#: builtin/sparse-checkout.c:586
 msgid "error while refreshing working directory"
 msgstr "erreur lors du rafraîchissement du répertoire de travail"
 
@@ -21676,12 +21883,37 @@
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper sync [--quiet] <chemin> <nouvelle-url>"
 
-#: builtin/submodule--helper.c:2323 git.c:436 git.c:683
+#: builtin/submodule--helper.c:2294
+msgid "set the default tracking branch to master"
+msgstr "régler la branche de suivi par défaut à master"
+
+#: builtin/submodule--helper.c:2296
+msgid "set the default tracking branch"
+msgstr "régler la branche de suivi par défaut"
+
+#: builtin/submodule--helper.c:2300
+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:2301
+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:2308
+msgid "--branch or --default required"
+msgstr "--branch ou --default requis"
+
+#: builtin/submodule--helper.c:2311
+msgid "--branch and --default are mutually exclusive"
+msgstr "--branch et --default sont mutuellement exclusifs"
+
+#: builtin/submodule--helper.c:2367 git.c:436 git.c:683
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s ne gère pas --super-prefix"
 
-#: builtin/submodule--helper.c:2329
+#: builtin/submodule--helper.c:2373
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' n'est pas une sous-commande valide de submodule--helper"
@@ -22331,208 +22563,196 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <chemin>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:894
+#: builtin/worktree.c:60 builtin/worktree.c:972
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "échec de la suppression de '%s'"
 
-#: builtin/worktree.c:79
-#, c-format
-msgid "Removing worktrees/%s: not a valid directory"
-msgstr "Suppression de worktrees/%s : répertoire invalide"
-
 #: builtin/worktree.c:85
-#, c-format
-msgid "Removing worktrees/%s: gitdir file does not exist"
-msgstr "Suppression de worktrees/%s : le fichier gitdir n'existe pas"
+msgid "not a valid directory"
+msgstr "pas un répertoire valide"
 
-#: builtin/worktree.c:90 builtin/worktree.c:99
-#, c-format
-msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
-msgstr ""
-"Suppression de worktrees/%s : échec de la lecture du fichier gitdir (%s)"
+#: builtin/worktree.c:91
+msgid "gitdir file does not exist"
+msgstr "le fichier gitdir n'existe pas"
 
-#: builtin/worktree.c:109
+#: builtin/worktree.c:96 builtin/worktree.c:105
 #, c-format
-msgid ""
-"Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
-"%<PRIuMAX>)"
-msgstr ""
-"Suppression de worktrees/%s: lecture trop courte ( %<PRIuMAX> octets "
-"attendus, %<PRIuMAX> octets lus)"
+msgid "unable to read gitdir file (%s)"
+msgstr "impossible de lire le fichier gitdir (%s)"
 
-#: builtin/worktree.c:117
+#: builtin/worktree.c:115
 #, c-format
-msgid "Removing worktrees/%s: invalid gitdir file"
-msgstr "Suppression de worktrees/%s : fichier gitdir invalide"
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "lecture trop courte ( %<PRIuMAX> octets attendus, %<PRIuMAX> octets lus)"
 
-#: builtin/worktree.c:126
+#: builtin/worktree.c:123
+msgid "invalid gitdir file"
+msgstr "fichier gitdir invalide"
+
+#: builtin/worktree.c:131
+msgid "gitdir file points to non-existent location"
+msgstr "le fichier gitdir pointe sur un endroit inexistant"
+
+#: builtin/worktree.c:146
 #, c-format
-msgid "Removing worktrees/%s: gitdir file points to non-existent location"
-msgstr ""
-"Suppression de worktrees/%s : le fichier gitdir point sur un endroit "
-"inexistant"
+msgid "Removing %s/%s: %s"
+msgstr "Suppression de %s/%s : %s"
 
-#: builtin/worktree.c:165
+#: builtin/worktree.c:221
 msgid "report pruned working trees"
 msgstr "afficher les arbres de travail éliminés"
 
-#: builtin/worktree.c:167
+#: builtin/worktree.c:223
 msgid "expire working trees older than <time>"
 msgstr "faire expirer les arbres de travail plus vieux que <temps>"
 
-#: builtin/worktree.c:234
+#: builtin/worktree.c:293
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' existe déjà"
 
-#: builtin/worktree.c:244
+#: builtin/worktree.c:302
 #, c-format
-msgid "unable to re-add worktree '%s'"
-msgstr "impossible de ré-ajouter l'arbre de travail '%s'"
+msgid "unusable worktree destination '%s'"
+msgstr "arbre de travail destination '%s' inutilisable"
 
-#: builtin/worktree.c:249
+#: builtin/worktree.c:307
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
-"use 'add -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
+"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 'add -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:251
+#: builtin/worktree.c:309
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
-"use 'add -f' to override, or 'prune' or 'remove' to clear"
+"use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
 "'%s' est un arbre de travail manquant mais déjà enregistré ;\n"
-"utilisez 'add -f' pour passer outre, ou 'prune' ou 'remove' pour corriger"
+"utilisez '%s -f' pour passer outre, ou 'prune' ou 'remove' pour corriger"
 
-#: builtin/worktree.c:301
+#: builtin/worktree.c:360
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "impossible de créer le répertoire de '%s'"
 
-#: builtin/worktree.c:435 builtin/worktree.c:441
+#: builtin/worktree.c:494 builtin/worktree.c:500
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Préparation de l'arbre de travail (nouvelle branche '%s')"
 
-#: builtin/worktree.c:437
+#: builtin/worktree.c:496
 #, 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)"
 
-#: builtin/worktree.c:446
+#: builtin/worktree.c:505
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Préparation de l'arbre de travail (extraction de '%s')"
 
-#: builtin/worktree.c:452
+#: builtin/worktree.c:511
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Préparation de l'arbre de travail (HEAD détachée %s)"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:552
 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"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:555
 msgid "create a new branch"
 msgstr "créer une nouvelle branche"
 
-#: builtin/worktree.c:498
+#: builtin/worktree.c:557
 msgid "create or reset a branch"
 msgstr "créer ou réinitialiser une branche"
 
-#: builtin/worktree.c:500
+#: builtin/worktree.c:559
 msgid "populate the new working tree"
 msgstr "remplissage de la nouvelle copie de travail"
 
-#: builtin/worktree.c:501
+#: builtin/worktree.c:560
 msgid "keep the new working tree locked"
 msgstr "conserver le verrou sur le nouvel arbre de travail"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:563
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "régler le mode de suivi (voir git-branch(1))"
 
-#: builtin/worktree.c:507
+#: builtin/worktree.c:566
 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:515
+#: builtin/worktree.c:574
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B et --detach sont mutuellement exclusifs"
 
-#: builtin/worktree.c:576
+#: builtin/worktree.c:635
 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:676
+#: builtin/worktree.c:755
 msgid "reason for locking"
 msgstr "raison du verrouillage"
 
-#: builtin/worktree.c:688 builtin/worktree.c:721 builtin/worktree.c:795
-#: builtin/worktree.c:922
+#: builtin/worktree.c:767 builtin/worktree.c:800 builtin/worktree.c:874
+#: builtin/worktree.c:1000
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' n'est pas une copie de travail"
 
-#: builtin/worktree.c:690 builtin/worktree.c:723
+#: builtin/worktree.c:769 builtin/worktree.c:802
 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"
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:774
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' est déjà verrouillé, car '%s'"
 
-#: builtin/worktree.c:697
+#: builtin/worktree.c:776
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' est déjà verrouillé"
 
-#: builtin/worktree.c:725
+#: builtin/worktree.c:804
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' n'est pas verrouillé"
 
-#: builtin/worktree.c:766
+#: builtin/worktree.c:845
 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"
 
-#: builtin/worktree.c:774
+#: builtin/worktree.c:853
 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é"
 
-#: builtin/worktree.c:797 builtin/worktree.c:924
+#: builtin/worktree.c:876 builtin/worktree.c:1002
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' est un arbre de travail principal"
 
-#: builtin/worktree.c:802
+#: builtin/worktree.c:881
 #, 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:808
-#, c-format
-msgid "target '%s' already exists"
-msgstr "la cible '%s' existe déjà"
-
-#: builtin/worktree.c:816
+#: builtin/worktree.c:894
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -22542,7 +22762,7 @@
 "verrouillage : %s\n"
 "utilisez 'move -f -f' pour outrepasser ou déverrouiller avant"
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:896
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -22550,39 +22770,39 @@
 "impossible de déplacer un arbre de travail verrouillé;\n"
 "utilisez 'move -f -f' pour outrepasser ou déverrouiller avant"
 
-#: builtin/worktree.c:821
+#: builtin/worktree.c:899
 #, 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:826
+#: builtin/worktree.c:904
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "échec au déplacement de '%s' vers '%s'"
 
-#: builtin/worktree.c:874
+#: builtin/worktree.c:952
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "échec du lancement de 'git status' sur '%s'"
 
-#: builtin/worktree.c:878
+#: builtin/worktree.c:956
 #, 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"
 
-#: builtin/worktree.c:883
+#: builtin/worktree.c:961
 #, 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:906
+#: builtin/worktree.c:984
 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é"
 
-#: builtin/worktree.c:929
+#: builtin/worktree.c:1007
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -22592,7 +22812,7 @@
 "verrouillage : %s\n"
 "utilisez 'move -f -f' pour outrepasser ou déverrouiller avant"
 
-#: builtin/worktree.c:931
+#: builtin/worktree.c:1009
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -22600,7 +22820,7 @@
 "impossible de supprimer un arbre de travail verrouillé;\n"
 "utilisez 'move -f -f' pour outrepasser ou déverrouiller avant"
 
-#: builtin/worktree.c:934
+#: builtin/worktree.c:1012
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr ""
@@ -22622,32 +22842,32 @@
 msgid "only useful for debugging"
 msgstr "seulement utile pour le débogage"
 
-#: bugreport.c:14
+#: bugreport.c:15
 msgid "git version:\n"
 msgstr "version git ::\n"
 
-#: bugreport.c:20
+#: bugreport.c:21
 #, c-format
 msgid "uname() failed with error '%s' (%d)\n"
 msgstr "échec de uname() avec l'erreur '%s' (%d)\n"
 
-#: bugreport.c:30
+#: bugreport.c:31
 msgid "compiler info: "
 msgstr "info compilateur : "
 
-#: bugreport.c:32
+#: bugreport.c:34
 msgid "libc info: "
 msgstr "info libc : "
 
-#: bugreport.c:74
+#: bugreport.c:80
 msgid "not run from a git repository - no hooks to show\n"
 msgstr "lancé hors d'un dépôt git - aucun crochet à montrer\n"
 
-#: bugreport.c:84
+#: bugreport.c:90
 msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
 msgstr "git bugreport [-o|--output-directory <fichier>] [-s|--suffix <format>]"
 
-#: bugreport.c:91
+#: bugreport.c:97
 msgid ""
 "Thank you for filling out a Git bug report!\n"
 "Please answer the following questions to help us understand your issue.\n"
@@ -22666,82 +22886,97 @@
 "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"
 "Veuillez relire le rapport de bogue ci-dessous.\n"
 "Vous pouvez supprimer toute ligne que vous ne souhaitez pas envoyer.\n"
 
-#: bugreport.c:130
+#: bugreport.c:136
 msgid "specify a destination for the bugreport file"
 msgstr "spécifier la destination du fichier de rapport de bogue"
 
-#: bugreport.c:132
+#: bugreport.c:138
 msgid "specify a strftime format suffix for the filename"
 msgstr "spécifier une suffixe au format strftime pour le nom de fichier"
 
-#: bugreport.c:156
+#: bugreport.c:162
 #, c-format
 msgid "could not create leading directories for '%s'"
 msgstr "impossible de créer les répertoires de premier niveau pour '%s'"
 
-#: bugreport.c:163
+#: bugreport.c:169
 msgid "System Info"
 msgstr "Info système"
 
-#: bugreport.c:166
+#: bugreport.c:172
 msgid "Enabled Hooks"
 msgstr "Crochets activés"
 
-#: bugreport.c:174
+#: bugreport.c:180
 #, c-format
 msgid "couldn't create a new file at '%s'"
 msgstr "impossible de créer un fichier nouveau à '%s'"
 
-#: bugreport.c:186
+#: bugreport.c:184
+#, c-format
+msgid "unable to write to %s"
+msgstr "impossible d'écrire dans %s"
+
+#: bugreport.c:194
 #, c-format
 msgid "Created new report at '%s'.\n"
 msgstr "Nouveau rapport créé à '%s'.\n"
 
-#: fast-import.c:3085
+#: fast-import.c:3100
 #, c-format
 msgid "Missing from marks for submodule '%s'"
 msgstr "Champs from manquants pour le sous-module '%s'"
 
-#: fast-import.c:3087
+#: fast-import.c:3102
 #, c-format
 msgid "Missing to marks for submodule '%s'"
 msgstr "champs to manquants pour le sous-module '%s'"
 
-#: fast-import.c:3222
+#: fast-import.c:3237
 #, c-format
 msgid "Expected 'mark' command, got %s"
 msgstr "commande 'mark' attendue, %s trouvé"
 
-#: fast-import.c:3227
+#: fast-import.c:3242
 #, c-format
 msgid "Expected 'to' command, got %s"
 msgstr "commande 'to' attendue, %s trouvé"
 
-#: fast-import.c:3317
+#: fast-import.c:3334
 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"
 
-#: fast-import.c:3371
+#: fast-import.c:3388
 #, 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"
 
+#: http-fetch.c:111
+#, c-format
+msgid "argument to --packfile must be a valid hash (got '%s')"
+msgstr "l'argument de --packfile doit être une empreinte valide ('%s' reçu)"
+
 #: credential-cache--daemon.c:223
 #, c-format
 msgid ""
@@ -22920,32 +23155,32 @@
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr "L'épinglage de clé publique n'est pas supporté avec cuRL < 7.44.0"
 
-#: http.c:914
+#: 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"
 
-#: http.c:993
+#: http.c:989
 msgid "Protocol restrictions not supported with cURL < 7.19.4"
 msgstr "Les restrictions de protocole ne sont pas supportés avec cuRL < 7.19.4"
 
-#: http.c:1139
+#: http.c:1132
 #, c-format
 msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
 msgstr "Dorsale SSL '%s' non supportée. Dorsales SSL supportées :"
 
-#: http.c:1146
+#: 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"
 
-#: http.c:1150
+#: 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:2032
+#: http.c:2025
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -22956,113 +23191,136 @@
 "      demandé : %s\n"
 "  redirection : %s"
 
-#: remote-curl.c:166
+#: remote-curl.c:168
 #, c-format
 msgid "invalid quoting in push-option value: '%s'"
 msgstr "citation invalide dans la valeur push-option : '%s'"
 
-#: remote-curl.c:263
+#: remote-curl.c:295
 #, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
 msgstr "%sinfo/refs n'est pas valide : est-ce bien un dépôt git ?"
 
-#: remote-curl.c:364
+#: remote-curl.c:396
 msgid "invalid server response; expected service, got flush packet"
 msgstr "réponse du serveur invalide ; service attendu, paquet de vidage reçu"
 
-#: remote-curl.c:395
+#: remote-curl.c:427
 #, c-format
 msgid "invalid server response; got '%s'"
 msgstr "réponse du serveur invalide ; '%s' reçu"
 
-#: remote-curl.c:455
+#: remote-curl.c:487
 #, c-format
 msgid "repository '%s' not found"
 msgstr "dépôt '%s' non trouvé"
 
-#: remote-curl.c:459
+#: remote-curl.c:491
 #, c-format
 msgid "Authentication failed for '%s'"
 msgstr "Échec d'authentification pour '%s'"
 
-#: remote-curl.c:463
+#: remote-curl.c:495
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr "impossible d'accéder à '%s' : %s"
 
-#: remote-curl.c:469
+#: remote-curl.c:501
 #, c-format
 msgid "redirecting to %s"
 msgstr "redirection vers %s"
 
-#: remote-curl.c:593
+#: remote-curl.c:630
 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:673
+#: remote-curl.c:642
+msgid "remote server sent stateless separator"
+msgstr "le serveur distant a envoyé un séparateur sans état"
+
+#: remote-curl.c:712
 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"
 
-#: remote-curl.c:733
+#: remote-curl.c:742
+#, c-format
+msgid "remote-curl: bad line length character: %.4s"
+msgstr "remote-curl : mauvais caractère de longueur de ligne : %.4s"
+
+#: remote-curl.c:744
+msgid "remote-curl: unexpected response end packet"
+msgstr "remote-curl : paquet de fin de réponse inattendu"
+
+#: remote-curl.c:820
 #, c-format
 msgid "RPC failed; %s"
 msgstr "échec RPC ; %s"
 
-#: remote-curl.c:773
+#: remote-curl.c:860
 msgid "cannot handle pushes this big"
 msgstr "impossible de gérer des poussées aussi grosses"
 
-#: remote-curl.c:888
+#: remote-curl.c:975
 #, 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:892
+#: remote-curl.c:979
 #, 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:1023
+#: remote-curl.c:1029
+#, 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:1031
+#, c-format
+msgid "%d bytes of body are still expected"
+msgstr "%d octets de corps sont encore attendus"
+
+#: remote-curl.c:1120
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "le protocole http idiot ne supporte la capacité superficielle"
 
-#: remote-curl.c:1038
+#: remote-curl.c:1135
 msgid "fetch failed."
 msgstr "échec du récupération."
 
-#: remote-curl.c:1086
+#: remote-curl.c:1183
 msgid "cannot fetch by sha1 over smart http"
 msgstr "impossible de récupérer par sha1 sur http intelligent"
 
-#: remote-curl.c:1130 remote-curl.c:1136
+#: remote-curl.c:1227 remote-curl.c:1233
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "erreur de protocole : sha/ref attendu, '%s' trouvé"
 
-#: remote-curl.c:1148 remote-curl.c:1263
+#: remote-curl.c:1245 remote-curl.c:1360
 #, c-format
 msgid "http transport does not support %s"
 msgstr "le transport http ne supporte pas %s"
 
-#: remote-curl.c:1184
+#: remote-curl.c:1281
 msgid "git-http-push failed"
 msgstr "échec de git-http-push"
 
-#: remote-curl.c:1369
+#: remote-curl.c:1466
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: usage: git remote-curl <distant> [<url>]"
 
-#: remote-curl.c:1401
+#: remote-curl.c:1498
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl : erreur de lecture du flux de commande depuis git"
 
-#: remote-curl.c:1408
+#: remote-curl.c:1505
 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:1448
+#: remote-curl.c:1546
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl : commande inconnue '%s' depuis git"
@@ -23179,7 +23437,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"
@@ -24117,26 +24376,26 @@
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Échec de parcours dans le chemin du sous-module '$displaypath'"
 
-#: git-submodule.sh:878
+#: git-submodule.sh:852
 msgid "The --cached option cannot be used with the --files option"
 msgstr "L'option --cached ne peut pas être utilisée avec l'option --files"
 
-#: git-submodule.sh:930
+#: git-submodule.sh:904
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "mode $mod_dst inattendu"
 
-#: git-submodule.sh:950
+#: git-submodule.sh:924
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr "  Attention : $display_name ne contient pas la validation $sha1_src"
 
-#: git-submodule.sh:953
+#: git-submodule.sh:927
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr "  Attention : $display_name ne contient pas la validation $sha1_dst"
 
-#: git-submodule.sh:956
+#: git-submodule.sh:930
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -24556,7 +24815,7 @@
 msgstr[0] "%d chemin touché\n"
 msgstr[1] "%d chemins touchés\n"
 
-#: git-add--interactive.perl:1053
+#: git-add--interactive.perl:1055
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -24564,7 +24823,7 @@
 "Si le patch s'applique proprement, la section éditée sera\n"
 "immédiatement marquée comme indexée."
 
-#: git-add--interactive.perl:1056
+#: git-add--interactive.perl:1058
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -24572,7 +24831,7 @@
 "Si le patch s'applique proprement, la section éditée sera\n"
 "immédiatement marquée comme remisée."
 
-#: git-add--interactive.perl:1059
+#: git-add--interactive.perl:1061
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -24580,8 +24839,8 @@
 "Si le patch s'applique proprement, la section éditée sera\n"
 "immédiatement marquée comme desindexée."
 
-#: git-add--interactive.perl:1062 git-add--interactive.perl:1071
-#: git-add--interactive.perl:1077
+#: git-add--interactive.perl:1064 git-add--interactive.perl:1073
+#: git-add--interactive.perl:1079
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -24589,8 +24848,8 @@
 "Si le patch s'applique proprement, la section éditée sera\n"
 "immédiatement marquée comme appliquée."
 
-#: git-add--interactive.perl:1065 git-add--interactive.perl:1068
-#: git-add--interactive.perl:1074
+#: git-add--interactive.perl:1067 git-add--interactive.perl:1070
+#: git-add--interactive.perl:1076
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -24598,12 +24857,12 @@
 "Si le patch s'applique proprement, la section éditée sera\n"
 "immédiatement marquée comme éliminée."
 
-#: git-add--interactive.perl:1111
+#: git-add--interactive.perl:1113
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "impossible d'ouvrir le fichier d'édition de section en écriture : %s"
 
-#: git-add--interactive.perl:1118
+#: git-add--interactive.perl:1120
 #, perl-format
 msgid ""
 "---\n"
@@ -24616,12 +24875,12 @@
 "Pour éliminer les lignes '%s', effacez-les.\n"
 "Les lignes commençant par %s seront éliminées.\n"
 
-#: git-add--interactive.perl:1140
+#: git-add--interactive.perl:1142
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "échec de l'ouverture du fichier d'édition de section en lecture : %s"
 
-#: git-add--interactive.perl:1248
+#: git-add--interactive.perl:1250
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -24635,7 +24894,7 @@
 "a - indexer cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas indexer cette section ni les suivantes de ce fichier"
 
-#: git-add--interactive.perl:1254
+#: git-add--interactive.perl:1256
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -24649,7 +24908,7 @@
 "a - remiser cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas remiser cette section ni les suivantes de ce fichier"
 
-#: git-add--interactive.perl:1260
+#: git-add--interactive.perl:1262
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -24663,7 +24922,7 @@
 "a - désindexer cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas désindexer cette section ni les suivantes de ce fichier"
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1268
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -24677,7 +24936,7 @@
 "a - appliquer cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas appliquer cette section ni les suivantes de ce fichier"
 
-#: git-add--interactive.perl:1272 git-add--interactive.perl:1290
+#: git-add--interactive.perl:1274 git-add--interactive.perl:1292
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -24691,7 +24950,7 @@
 "a - supprimer cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas supprimer cette section ni les suivantes de ce fichier"
 
-#: git-add--interactive.perl:1278
+#: git-add--interactive.perl:1280
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -24705,7 +24964,7 @@
 "a - éliminer cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas éliminer cette section ni les suivantes de ce fichier"
 
-#: git-add--interactive.perl:1284
+#: git-add--interactive.perl:1286
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -24719,7 +24978,7 @@
 "a - appliquer cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas appliquer cette section ni les suivantes de ce fichier"
 
-#: git-add--interactive.perl:1296
+#: git-add--interactive.perl:1298
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -24733,7 +24992,7 @@
 "a - appliquer cette section et toutes les suivantes de ce fichier\n"
 "d - ne pas appliquer cette section ni les suivantes de ce fichier"
 
-#: git-add--interactive.perl:1311
+#: git-add--interactive.perl:1313
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -24755,86 +25014,91 @@
 "e - éditer manuellement la section actuelle\n"
 "? - afficher l'aide\n"
 
-#: git-add--interactive.perl:1342
+#: git-add--interactive.perl:1344
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "Les sections sélectionnées ne s'applique pas à l'index !\n"
 
-#: git-add--interactive.perl:1357
+#: git-add--interactive.perl:1359
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "fichier non-fusionné ignoré : %s\n"
 
-#: git-add--interactive.perl:1468
+#: git-add--interactive.perl:1478
 #, 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,?] ? "
 
-#: git-add--interactive.perl:1469
+#: git-add--interactive.perl:1479
 #, perl-format
 msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
 msgstr "Appliquer la suppression dans l'arbre de travail [y,n,q,a,d%s,?] ? "
 
-#: git-add--interactive.perl:1470
+#: git-add--interactive.perl:1480
+#, perl-format
+msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
+msgstr "Appliquer l'ajout dans l'arbre de travail [y,n,q,a,d%s,?] ? "
+
+#: git-add--interactive.perl:1481
 #, perl-format
 msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
 msgstr "Appliquer la section à l'arbre de travail [y,n,q,a,d%s,?] ? "
 
-#: git-add--interactive.perl:1570
+#: git-add--interactive.perl:1587
 msgid "No other hunks to goto\n"
 msgstr "Aucune autre section à atteindre\n"
 
-#: git-add--interactive.perl:1588
+#: git-add--interactive.perl:1605
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Nombre invalide : '%s'\n"
 
-#: git-add--interactive.perl:1593
+#: git-add--interactive.perl:1610
 #, perl-format
 msgid "Sorry, only %d hunk available.\n"
 msgid_plural "Sorry, only %d hunks available.\n"
 msgstr[0] "Désolé, %d seule section disponible.\n"
 msgstr[1] "Désolé, Seulement %d sections disponibles.\n"
 
-#: git-add--interactive.perl:1619
+#: git-add--interactive.perl:1636
 msgid "No other hunks to search\n"
 msgstr "aucune autre section à rechercher\n"
 
-#: git-add--interactive.perl:1636
+#: git-add--interactive.perl:1653
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Regex de recherche malformée %s : %s\n"
 
-#: git-add--interactive.perl:1646
+#: git-add--interactive.perl:1663
 msgid "No hunk matches the given pattern\n"
 msgstr "Aucune section ne correspond au motif donné\n"
 
-#: git-add--interactive.perl:1658 git-add--interactive.perl:1680
+#: git-add--interactive.perl:1675 git-add--interactive.perl:1697
 msgid "No previous hunk\n"
 msgstr "Pas de section précédente\n"
 
-#: git-add--interactive.perl:1667 git-add--interactive.perl:1686
+#: git-add--interactive.perl:1684 git-add--interactive.perl:1703
 msgid "No next hunk\n"
 msgstr "Pas de section suivante\n"
 
-#: git-add--interactive.perl:1692
+#: git-add--interactive.perl:1709
 msgid "Sorry, cannot split this hunk\n"
 msgstr "Désolé, impossible de découper cette section\n"
 
-#: git-add--interactive.perl:1698
+#: git-add--interactive.perl:1715
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
 msgstr[0] "Découpée en %d section.\n"
 msgstr[1] "Découpée en %d sections.\n"
 
-#: git-add--interactive.perl:1708
+#: git-add--interactive.perl:1725
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "Désolé, impossible d'éditer cette section\n"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1773
+#: git-add--interactive.perl:1790
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -24852,19 +25116,19 @@
 "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:1790 git-add--interactive.perl:1795
-#: git-add--interactive.perl:1798 git-add--interactive.perl:1805
-#: git-add--interactive.perl:1808 git-add--interactive.perl:1815
-#: git-add--interactive.perl:1819 git-add--interactive.perl:1825
+#: git-add--interactive.perl:1807 git-add--interactive.perl:1812
+#: git-add--interactive.perl:1815 git-add--interactive.perl:1822
+#: git-add--interactive.perl:1825 git-add--interactive.perl:1832
+#: git-add--interactive.perl:1836 git-add--interactive.perl:1842
 msgid "missing --"
 msgstr "-- manquant"
 
-#: git-add--interactive.perl:1821
+#: git-add--interactive.perl:1838
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "mode de --patch inconnu : %s"
 
-#: git-add--interactive.perl:1827 git-add--interactive.perl:1833
+#: git-add--interactive.perl:1844 git-add--interactive.perl:1850
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "argument invalide %s, -- attendu"
@@ -25183,56 +25447,56 @@
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Ajout de to: %s depuis la ligne '%s'\n"
 
-#: git-send-email.perl:1718
+#: git-send-email.perl:1722
 #, 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:1753
+#: git-send-email.perl:1757
 #, 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:1864
+#: git-send-email.perl:1868
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Impossible d'exécuter '%s'"
 
-#: git-send-email.perl:1871
+#: git-send-email.perl:1875
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Ajout de %s : %s depuis : '%s'\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1879
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) échec de la fermeture du pipe vers '%s'"
 
-#: git-send-email.perl:1905
+#: git-send-email.perl:1909
 msgid "cannot send message as 7bit"
 msgstr "impossible d'envoyer un message comme 7bit"
 
-#: git-send-email.perl:1913
+#: git-send-email.perl:1917
 msgid "invalid transfer encoding"
 msgstr "codage de transfert invalide"
 
-#: git-send-email.perl:1954 git-send-email.perl:2006 git-send-email.perl:2016
+#: git-send-email.perl:1958 git-send-email.perl:2010 git-send-email.perl:2020
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "impossible d'ouvrir %s :%s\n"
 
-#: git-send-email.perl:1957
+#: git-send-email.perl:1961
 #, 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"
 
-#: git-send-email.perl:1974
+#: git-send-email.perl:1978
 #, 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:1978
+#: git-send-email.perl:1982
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Souhaitez-vous réellement envoyer %s ?[y|N] : "
diff --git a/po/git.pot b/po/git.pot
index 49e3db0..198b6e0 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: 2020-05-27 07:23+0800\n"
+"POT-Creation-Date: 2020-07-10 09:53+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"
@@ -111,21 +111,21 @@
 msgid "ignoring unmerged: %s"
 msgstr ""
 
-#: add-interactive.c:929 add-patch.c:1675 git-add--interactive.perl:1366
+#: add-interactive.c:929 add-patch.c:1691 git-add--interactive.perl:1368
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr ""
 
-#: add-interactive.c:931 add-patch.c:1673 git-add--interactive.perl:1368
+#: add-interactive.c:931 add-patch.c:1689 git-add--interactive.perl:1370
 #, c-format
 msgid "No changes.\n"
 msgstr ""
 
-#: add-interactive.c:935 git-add--interactive.perl:1376
+#: add-interactive.c:935 git-add--interactive.perl:1378
 msgid "Patch update"
 msgstr ""
 
-#: add-interactive.c:974 git-add--interactive.perl:1754
+#: add-interactive.c:974 git-add--interactive.perl:1771
 msgid "Review diff"
 msgstr ""
 
@@ -193,11 +193,11 @@
 msgid "(empty) select nothing"
 msgstr ""
 
-#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1851
+#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1868
 msgid "*** Commands ***"
 msgstr ""
 
-#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1848
+#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1865
 msgid "What now"
 msgstr ""
 
@@ -214,7 +214,7 @@
 #: builtin/merge.c:276 builtin/pull.c:190 builtin/submodule--helper.c:409
 #: builtin/submodule--helper.c:1394 builtin/submodule--helper.c:1397
 #: builtin/submodule--helper.c:1902 builtin/submodule--helper.c:1905
-#: builtin/submodule--helper.c:2148 bugreport.c:129
+#: builtin/submodule--helper.c:2148 bugreport.c:135
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr ""
@@ -223,33 +223,38 @@
 msgid "could not refresh index"
 msgstr ""
 
-#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1765
+#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1782
 #, c-format
 msgid "Bye.\n"
 msgstr ""
 
-#: add-patch.c:34 git-add--interactive.perl:1428
+#: add-patch.c:34 git-add--interactive.perl:1430
 #, c-format, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:35 git-add--interactive.perl:1429
+#: add-patch.c:35 git-add--interactive.perl:1431
 #, c-format, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:36 git-add--interactive.perl:1430
+#: add-patch.c:36 git-add--interactive.perl:1432
+#, c-format, perl-format
+msgid "Stage addition [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:37 git-add--interactive.perl:1433
 #, c-format, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:38
+#: add-patch.c:39
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "staging."
 msgstr ""
 
-#: add-patch.c:41
+#: add-patch.c:42
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -258,28 +263,33 @@
 "d - do not stage this hunk or any of the later hunks in the file\n"
 msgstr ""
 
-#: add-patch.c:55 git-add--interactive.perl:1433
+#: add-patch.c:56 git-add--interactive.perl:1436
 #, c-format, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:56 git-add--interactive.perl:1434
+#: add-patch.c:57 git-add--interactive.perl:1437
 #, c-format, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:57 git-add--interactive.perl:1435
+#: add-patch.c:58 git-add--interactive.perl:1438
+#, c-format, perl-format
+msgid "Stash addition [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:59 git-add--interactive.perl:1439
 #, c-format, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:59
+#: add-patch.c:61
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "stashing."
 msgstr ""
 
-#: add-patch.c:62
+#: add-patch.c:64
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -288,28 +298,33 @@
 "d - do not stash this hunk or any of the later hunks in the file\n"
 msgstr ""
 
-#: add-patch.c:78 git-add--interactive.perl:1438
+#: add-patch.c:80 git-add--interactive.perl:1442
 #, c-format, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:79 git-add--interactive.perl:1439
+#: add-patch.c:81 git-add--interactive.perl:1443
 #, c-format, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:80 git-add--interactive.perl:1440
+#: add-patch.c:82 git-add--interactive.perl:1444
+#, c-format, perl-format
+msgid "Unstage addition [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:83 git-add--interactive.perl:1445
 #, c-format, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:82
+#: add-patch.c:85
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "unstaging."
 msgstr ""
 
-#: add-patch.c:85
+#: add-patch.c:88
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -318,28 +333,33 @@
 "d - do not unstage this hunk or any of the later hunks in the file\n"
 msgstr ""
 
-#: add-patch.c:100 git-add--interactive.perl:1443
+#: add-patch.c:103 git-add--interactive.perl:1448
 #, c-format, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:101 git-add--interactive.perl:1444
+#: add-patch.c:104 git-add--interactive.perl:1449
 #, c-format, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:102 git-add--interactive.perl:1445
+#: add-patch.c:105 git-add--interactive.perl:1450
+#, c-format, perl-format
+msgid "Apply addition to index [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:106 git-add--interactive.perl:1451
 #, c-format, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:104 add-patch.c:169 add-patch.c:212
+#: 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 ""
 
-#: add-patch.c:107
+#: add-patch.c:111
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -348,31 +368,37 @@
 "d - do not apply this hunk or any of the later hunks in the file\n"
 msgstr ""
 
-#: add-patch.c:122 git-add--interactive.perl:1448
-#: git-add--interactive.perl:1463
+#: add-patch.c:126 git-add--interactive.perl:1454
+#: git-add--interactive.perl:1472
 #, c-format, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:123 git-add--interactive.perl:1449
-#: git-add--interactive.perl:1464
+#: add-patch.c:127 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
 #, c-format, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:124 git-add--interactive.perl:1450
-#: git-add--interactive.perl:1465
+#: add-patch.c:128 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
+#, c-format, perl-format
+msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:129 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
 #, c-format, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:126 add-patch.c:148 add-patch.c:191
+#: 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 ""
 
-#: add-patch.c:129 add-patch.c:194
+#: add-patch.c:134 add-patch.c:202
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -381,22 +407,27 @@
 "d - do not discard this hunk or any of the later hunks in the file\n"
 msgstr ""
 
-#: add-patch.c:144 add-patch.c:187 git-add--interactive.perl:1453
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1460
 #, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:145 add-patch.c:188 git-add--interactive.perl:1454
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1461
 #, c-format, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:146 add-patch.c:189 git-add--interactive.perl:1455
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1462
+#, c-format, perl-format
+msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1463
 #, c-format, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:151
+#: add-patch.c:157
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -405,22 +436,27 @@
 "d - do not discard this hunk or any of the later hunks in the file\n"
 msgstr ""
 
-#: add-patch.c:165 add-patch.c:208 git-add--interactive.perl:1458
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1466
 #, c-format, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:166 add-patch.c:209 git-add--interactive.perl:1459
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1467
 #, c-format, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:167 add-patch.c:210 git-add--interactive.perl:1460
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1468
+#, c-format, perl-format
+msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1469
 #, c-format, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: add-patch.c:172
+#: add-patch.c:179
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -429,7 +465,7 @@
 "d - do not apply this hunk or any of the later hunks in the file\n"
 msgstr ""
 
-#: add-patch.c:215
+#: add-patch.c:224
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -438,47 +474,47 @@
 "d - do not apply this hunk or any of the later hunks in the file\n"
 msgstr ""
 
-#: add-patch.c:319
+#: add-patch.c:328
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr ""
 
-#: add-patch.c:338 add-patch.c:342
+#: add-patch.c:347 add-patch.c:351
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr ""
 
-#: add-patch.c:396
+#: add-patch.c:405
 msgid "could not parse diff"
 msgstr ""
 
-#: add-patch.c:415
+#: add-patch.c:424
 msgid "could not parse colored diff"
 msgstr ""
 
-#: add-patch.c:429
+#: add-patch.c:438
 #, c-format
 msgid "failed to run '%s'"
 msgstr ""
 
-#: add-patch.c:588
+#: add-patch.c:602
 msgid "mismatched output from interactive.diffFilter"
 msgstr ""
 
-#: add-patch.c:589
+#: add-patch.c:603
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
 msgstr ""
 
-#: add-patch.c:762
+#: add-patch.c:776
 #, c-format
 msgid ""
 "expected context line #%d in\n"
 "%.*s"
 msgstr ""
 
-#: add-patch.c:777
+#: add-patch.c:791
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -487,11 +523,11 @@
 "%.*s"
 msgstr ""
 
-#: add-patch.c:1053 git-add--interactive.perl:1112
+#: add-patch.c:1067 git-add--interactive.perl:1114
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr ""
 
-#: add-patch.c:1057
+#: add-patch.c:1071
 #, c-format
 msgid ""
 "---\n"
@@ -501,18 +537,18 @@
 msgstr ""
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1071 git-add--interactive.perl:1126
+#: add-patch.c:1085 git-add--interactive.perl:1128
 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:1104
+#: add-patch.c:1118
 msgid "could not parse hunk header"
 msgstr ""
 
-#: add-patch.c:1149
+#: add-patch.c:1163
 msgid "'git apply --cached' failed"
 msgstr ""
 
@@ -528,24 +564,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:1218 git-add--interactive.perl:1239
+#: add-patch.c:1232 git-add--interactive.perl:1241
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
 
-#: add-patch.c:1261
+#: add-patch.c:1275
 msgid "The selected hunks do not apply to the index!"
 msgstr ""
 
-#: add-patch.c:1262 git-add--interactive.perl:1343
+#: add-patch.c:1276 git-add--interactive.perl:1345
 msgid "Apply them to the worktree anyway? "
 msgstr ""
 
-#: add-patch.c:1269 git-add--interactive.perl:1346
+#: add-patch.c:1283 git-add--interactive.perl:1348
 msgid "Nothing was applied.\n"
 msgstr ""
 
-#: add-patch.c:1326
+#: add-patch.c:1340
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -558,69 +594,69 @@
 "? - print help\n"
 msgstr ""
 
-#: add-patch.c:1447 add-patch.c:1457
+#: add-patch.c:1463 add-patch.c:1473
 msgid "No previous hunk"
 msgstr ""
 
-#: add-patch.c:1452 add-patch.c:1462
+#: add-patch.c:1468 add-patch.c:1478
 msgid "No next hunk"
 msgstr ""
 
-#: add-patch.c:1468
+#: add-patch.c:1484
 msgid "No other hunks to goto"
 msgstr ""
 
-#: add-patch.c:1479 git-add--interactive.perl:1577
+#: add-patch.c:1495 git-add--interactive.perl:1594
 msgid "go to which hunk (<ret> to see more)? "
 msgstr ""
 
-#: add-patch.c:1480 git-add--interactive.perl:1579
+#: add-patch.c:1496 git-add--interactive.perl:1596
 msgid "go to which hunk? "
 msgstr ""
 
-#: add-patch.c:1491
+#: add-patch.c:1507
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr ""
 
-#: add-patch.c:1496
+#: add-patch.c:1512
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] ""
 msgstr[1] ""
 
-#: add-patch.c:1505
+#: add-patch.c:1521
 msgid "No other hunks to search"
 msgstr ""
 
-#: add-patch.c:1511 git-add--interactive.perl:1623
+#: add-patch.c:1527 git-add--interactive.perl:1640
 msgid "search for regex? "
 msgstr ""
 
-#: add-patch.c:1526
+#: add-patch.c:1542
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr ""
 
-#: add-patch.c:1543
+#: add-patch.c:1559
 msgid "No hunk matches the given pattern"
 msgstr ""
 
-#: add-patch.c:1550
+#: add-patch.c:1566
 msgid "Sorry, cannot split this hunk"
 msgstr ""
 
-#: add-patch.c:1554
+#: add-patch.c:1570
 #, c-format
 msgid "Split into %d hunks."
 msgstr ""
 
-#: add-patch.c:1558
+#: add-patch.c:1574
 msgid "Sorry, cannot edit this hunk"
 msgstr ""
 
-#: add-patch.c:1609
+#: add-patch.c:1625
 msgid "'git apply' failed"
 msgstr ""
 
@@ -1270,7 +1306,7 @@
 
 #: apply.c:5008 builtin/am.c:2238 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3458 builtin/rebase.c:1332
+#: builtin/pack-objects.c:3530 builtin/rebase.c:1332
 msgid "action"
 msgstr ""
 
@@ -1359,7 +1395,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr ""
 
-#: archive-zip.c:480 builtin/pack-objects.c:232 builtin/pack-objects.c:235
+#: archive-zip.c:480 builtin/pack-objects.c:243 builtin/pack-objects.c:246
 #, c-format
 msgid "deflate error (%d)"
 msgstr ""
@@ -1427,8 +1463,8 @@
 msgstr ""
 
 #: archive.c:467 builtin/blame.c:861 builtin/blame.c:865 builtin/blame.c:866
-#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1162
-#: builtin/fast-export.c:1164 builtin/fast-export.c:1168 builtin/grep.c:907
+#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1208
+#: builtin/fast-export.c:1210 builtin/fast-export.c:1214 builtin/grep.c:907
 #: 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
@@ -1636,10 +1672,10 @@
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 
-#: blame.c:2821 bundle.c:167 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
+#: blame.c:2821 bundle.c:187 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
 #: sequencer.c:4466 submodule.c:847 builtin/commit.c:1047 builtin/log.c:405
 #: builtin/log.c:1012 builtin/log.c:1541 builtin/log.c:1945 builtin/log.c:2235
-#: builtin/merge.c:415 builtin/pack-objects.c:3276 builtin/pack-objects.c:3291
+#: builtin/merge.c:415 builtin/pack-objects.c:3348 builtin/pack-objects.c:3363
 #: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr ""
@@ -1783,84 +1819,88 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr ""
 
-#: bundle.c:36
+#: bundle.c:47
 #, c-format
 msgid "'%s' does not look like a v2 bundle file"
 msgstr ""
 
-#: bundle.c:64
+#: bundle.c:69
+msgid "unknown hash algorithm length"
+msgstr ""
+
+#: bundle.c:84
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr ""
 
-#: bundle.c:90 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
+#: bundle.c:110 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
 msgstr ""
 
-#: bundle.c:143
+#: bundle.c:163
 msgid "Repository lacks these prerequisite commits:"
 msgstr ""
 
-#: bundle.c:146
+#: bundle.c:166
 msgid "need a repository to verify a bundle"
 msgstr ""
 
-#: bundle.c:197
+#: bundle.c:217
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: bundle.c:204
+#: bundle.c:224
 msgid "The bundle records a complete history."
 msgstr ""
 
-#: bundle.c:206
+#: bundle.c:226
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: bundle.c:273
+#: bundle.c:293
 msgid "unable to dup bundle descriptor"
 msgstr ""
 
-#: bundle.c:280
+#: bundle.c:300
 msgid "Could not spawn pack-objects"
 msgstr ""
 
-#: bundle.c:291
+#: bundle.c:311
 msgid "pack-objects died"
 msgstr ""
 
-#: bundle.c:333
+#: bundle.c:353
 msgid "rev-list died"
 msgstr ""
 
-#: bundle.c:382
+#: bundle.c:402
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr ""
 
-#: bundle.c:461 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
+#: bundle.c:481 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr ""
 
-#: bundle.c:469
+#: bundle.c:489
 msgid "Refusing to create empty bundle."
 msgstr ""
 
-#: bundle.c:479
+#: bundle.c:499
 #, c-format
 msgid "cannot create '%s'"
 msgstr ""
 
-#: bundle.c:504
+#: bundle.c:524
 msgid "index-pack died"
 msgstr ""
 
@@ -1869,269 +1909,261 @@
 msgid "invalid color value: %.*s"
 msgstr ""
 
-#: commit-graph.c:183
+#: commit-graph.c:238
 msgid "commit-graph file is too small"
 msgstr ""
 
-#: commit-graph.c:248
+#: commit-graph.c:303
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr ""
 
-#: commit-graph.c:255
+#: commit-graph.c:310
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr ""
 
-#: commit-graph.c:262
+#: commit-graph.c:317
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr ""
 
-#: commit-graph.c:284
+#: commit-graph.c:339
 msgid "commit-graph chunk lookup table entry missing; file may be incomplete"
 msgstr ""
 
-#: commit-graph.c:294
+#: commit-graph.c:349
 #, c-format
 msgid "commit-graph improper chunk offset %08x%08x"
 msgstr ""
 
-#: commit-graph.c:362
+#: commit-graph.c:417
 #, c-format
 msgid "commit-graph chunk id %08x appears multiple times"
 msgstr ""
 
-#: commit-graph.c:436
+#: commit-graph.c:491
 msgid "commit-graph has no base graphs chunk"
 msgstr ""
 
-#: commit-graph.c:446
+#: commit-graph.c:501
 msgid "commit-graph chain does not match"
 msgstr ""
 
-#: commit-graph.c:494
+#: commit-graph.c:549
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr ""
 
-#: commit-graph.c:518
+#: commit-graph.c:573
 msgid "unable to find all commit-graph files"
 msgstr ""
 
-#: commit-graph.c:651 commit-graph.c:711
+#: commit-graph.c:706 commit-graph.c:770
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr ""
 
-#: commit-graph.c:672
+#: commit-graph.c:727
 #, c-format
 msgid "could not find commit %s"
 msgstr ""
 
-#: commit-graph.c:948 builtin/am.c:1292
+#: commit-graph.c:1009 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr ""
 
-#: commit-graph.c:1096
+#: commit-graph.c:1157
 msgid "Writing changed paths Bloom filters index"
 msgstr ""
 
-#: commit-graph.c:1121
+#: commit-graph.c:1182
 msgid "Writing changed paths Bloom filters data"
 msgstr ""
 
-#: commit-graph.c:1160 builtin/pack-objects.c:2783
+#: commit-graph.c:1221 builtin/pack-objects.c:2832
 #, c-format
 msgid "unable to get type of object %s"
 msgstr ""
 
-#: commit-graph.c:1196
+#: commit-graph.c:1257
 msgid "Loading known commits in commit graph"
 msgstr ""
 
-#: commit-graph.c:1213
+#: commit-graph.c:1274
 msgid "Expanding reachable commits in commit graph"
 msgstr ""
 
-#: commit-graph.c:1233
+#: commit-graph.c:1294
 msgid "Clearing commit marks in commit graph"
 msgstr ""
 
-#: commit-graph.c:1252
+#: commit-graph.c:1313
 msgid "Computing commit graph generation numbers"
 msgstr ""
 
-#: commit-graph.c:1300
+#: commit-graph.c:1367
 msgid "Computing commit changed paths Bloom filters"
 msgstr ""
 
-#: commit-graph.c:1359
+#: commit-graph.c:1423
+msgid "Collecting referenced commits"
+msgstr ""
+
+#: commit-graph.c:1447
 #, 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:1372
+#: commit-graph.c:1460
 #, c-format
 msgid "error adding pack %s"
 msgstr ""
 
-#: commit-graph.c:1376
+#: commit-graph.c:1464
 #, c-format
 msgid "error opening index for %s"
 msgstr ""
 
-#: commit-graph.c:1405
-#, c-format
-msgid "Finding commits for commit graph from %d ref"
-msgid_plural "Finding commits for commit graph from %d refs"
-msgstr[0] ""
-msgstr[1] ""
-
-#: commit-graph.c:1426
-#, c-format
-msgid "invalid commit object id: %s"
-msgstr ""
-
-#: commit-graph.c:1442
+#: commit-graph.c:1503
 msgid "Finding commits for commit graph among packed objects"
 msgstr ""
 
-#: commit-graph.c:1457
+#: commit-graph.c:1518
 msgid "Counting distinct commits in commit graph"
 msgstr ""
 
-#: commit-graph.c:1489
+#: commit-graph.c:1550
 msgid "Finding extra edges in commit graph"
 msgstr ""
 
-#: commit-graph.c:1538
+#: commit-graph.c:1599
 msgid "failed to write correct number of base graph ids"
 msgstr ""
 
-#: commit-graph.c:1572 midx.c:812
+#: commit-graph.c:1633 midx.c:812
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr ""
 
-#: commit-graph.c:1585
+#: commit-graph.c:1646
 msgid "unable to create temporary graph layer"
 msgstr ""
 
-#: commit-graph.c:1590
+#: commit-graph.c:1651
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr ""
 
-#: commit-graph.c:1667
+#: commit-graph.c:1728
 #, 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:1712
+#: commit-graph.c:1773
 msgid "unable to open commit-graph chain file"
 msgstr ""
 
-#: commit-graph.c:1728
+#: commit-graph.c:1789
 msgid "failed to rename base commit-graph file"
 msgstr ""
 
-#: commit-graph.c:1748
+#: commit-graph.c:1809
 msgid "failed to rename temporary commit-graph file"
 msgstr ""
 
-#: commit-graph.c:1874
+#: commit-graph.c:1935
 msgid "Scanning merged commits"
 msgstr ""
 
-#: commit-graph.c:1885
+#: commit-graph.c:1946
 #, c-format
 msgid "unexpected duplicate commit id %s"
 msgstr ""
 
-#: commit-graph.c:1908
+#: commit-graph.c:1969
 msgid "Merging commit-graph"
 msgstr ""
 
-#: commit-graph.c:2096
+#: commit-graph.c:2156
 #, c-format
 msgid "the commit graph format cannot write %d commits"
 msgstr ""
 
-#: commit-graph.c:2107
+#: commit-graph.c:2167
 msgid "too many commits to write graph"
 msgstr ""
 
-#: commit-graph.c:2200
+#: commit-graph.c:2260
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 
-#: commit-graph.c:2210
+#: commit-graph.c:2270
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr ""
 
-#: commit-graph.c:2220 commit-graph.c:2235
+#: commit-graph.c:2280 commit-graph.c:2295
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 
-#: commit-graph.c:2227
+#: commit-graph.c:2287
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr ""
 
-#: commit-graph.c:2245
+#: commit-graph.c:2305
 msgid "Verifying commits in commit graph"
 msgstr ""
 
-#: commit-graph.c:2259
+#: commit-graph.c:2320
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 
-#: commit-graph.c:2266
+#: commit-graph.c:2327
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 
-#: commit-graph.c:2276
+#: commit-graph.c:2337
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr ""
 
-#: commit-graph.c:2285
+#: commit-graph.c:2346
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr ""
 
-#: commit-graph.c:2298
+#: commit-graph.c:2360
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr ""
 
-#: commit-graph.c:2303
+#: commit-graph.c:2365
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr ""
 
-#: commit-graph.c:2307
+#: commit-graph.c:2369
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr ""
 
-#: commit-graph.c:2322
+#: commit-graph.c:2385
 #, c-format
 msgid "commit-graph generation for commit %s is %u != %u"
 msgstr ""
 
-#: commit-graph.c:2328
+#: commit-graph.c:2391
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
@@ -2159,27 +2191,27 @@
 "\"git config advice.graftFileDeprecated false\""
 msgstr ""
 
-#: commit.c:1168
+#: commit.c:1172
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 
-#: commit.c:1172
+#: commit.c:1176
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr ""
 
-#: commit.c:1175
+#: commit.c:1179
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr ""
 
-#: commit.c:1178
+#: commit.c:1182
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr ""
 
-#: commit.c:1432
+#: commit.c:1436
 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"
@@ -2359,7 +2391,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr ""
 
-#: config.c:1533 builtin/pack-objects.c:3542
+#: config.c:1533 builtin/pack-objects.c:3617
 #, c-format
 msgid "bad pack compression level %d"
 msgstr ""
@@ -2504,79 +2536,88 @@
 msgid "server doesn't support '%s'"
 msgstr ""
 
-#: connect.c:103
+#: connect.c:118
 #, c-format
 msgid "server doesn't support feature '%s'"
 msgstr ""
 
-#: connect.c:114
+#: connect.c:129
 msgid "expected flush after capabilities"
 msgstr ""
 
-#: connect.c:233
+#: connect.c:263
 #, c-format
 msgid "ignoring capabilities after first line '%s'"
 msgstr ""
 
-#: connect.c:252
+#: connect.c:284
 msgid "protocol error: unexpected capabilities^{}"
 msgstr ""
 
-#: connect.c:273
+#: connect.c:306
 #, c-format
 msgid "protocol error: expected shallow sha-1, got '%s'"
 msgstr ""
 
-#: connect.c:275
+#: connect.c:308
 msgid "repository on the other end cannot be shallow"
 msgstr ""
 
-#: connect.c:313
+#: connect.c:347
 msgid "invalid packet"
 msgstr ""
 
-#: connect.c:333
+#: connect.c:367
 #, c-format
 msgid "protocol error: unexpected '%s'"
 msgstr ""
 
-#: connect.c:441
+#: connect.c:473
+#, c-format
+msgid "unknown object format '%s' specified by server"
+msgstr ""
+
+#: connect.c:500
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr ""
 
-#: connect.c:445
+#: connect.c:504
 msgid "expected flush after ref listing"
 msgstr ""
 
-#: connect.c:544
+#: connect.c:507
+msgid "expected response end packet after ref listing"
+msgstr ""
+
+#: connect.c:640
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr ""
 
-#: connect.c:595
+#: connect.c:691
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr ""
 
-#: connect.c:635 connect.c:698
+#: connect.c:731 connect.c:794
 #, c-format
 msgid "Looking up %s ... "
 msgstr ""
 
-#: connect.c:639
+#: connect.c:735
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr ""
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:643 connect.c:714
+#: connect.c:739 connect.c:810
 #, c-format
 msgid ""
 "done.\n"
 "Connecting to %s (port %s) ... "
 msgstr ""
 
-#: connect.c:665 connect.c:742
+#: connect.c:761 connect.c:838
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2584,73 +2625,73 @@
 msgstr ""
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:671 connect.c:748
+#: connect.c:767 connect.c:844
 msgid "done."
 msgstr ""
 
-#: connect.c:702
+#: connect.c:798
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr ""
 
-#: connect.c:708
+#: connect.c:804
 #, c-format
 msgid "unknown port %s"
 msgstr ""
 
-#: connect.c:845 connect.c:1175
+#: connect.c:941 connect.c:1271
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr ""
 
-#: connect.c:847
+#: connect.c:943
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr ""
 
-#: connect.c:857
+#: connect.c:953
 #, c-format
 msgid "cannot start proxy %s"
 msgstr ""
 
-#: connect.c:928
+#: connect.c:1024
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr ""
 
-#: connect.c:1123
+#: connect.c:1219
 msgid "ssh variant 'simple' does not support -4"
 msgstr ""
 
-#: connect.c:1135
+#: connect.c:1231
 msgid "ssh variant 'simple' does not support -6"
 msgstr ""
 
-#: connect.c:1152
+#: connect.c:1248
 msgid "ssh variant 'simple' does not support setting port"
 msgstr ""
 
-#: connect.c:1264
+#: connect.c:1360
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr ""
 
-#: connect.c:1311
+#: connect.c:1407
 msgid "unable to fork"
 msgstr ""
 
-#: connected.c:107 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:109 builtin/fsck.c:209 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr ""
 
-#: connected.c:119
+#: connected.c:121
 msgid "Could not run 'git rev-list'"
 msgstr ""
 
-#: connected.c:139
+#: connected.c:141
 msgid "failed write to rev-list"
 msgstr ""
 
-#: connected.c:146
+#: connected.c:148
 msgid "failed to close rev-list's stdin"
 msgstr ""
 
@@ -2901,564 +2942,564 @@
 "tree"
 msgstr ""
 
-#: diff.c:155
+#: diff.c:156
 #, c-format
 msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
 msgstr ""
 
-#: diff.c:160
+#: diff.c:161
 #, c-format
 msgid "  Unknown dirstat parameter '%s'\n"
 msgstr ""
 
-#: diff.c:296
+#: diff.c:297
 msgid ""
 "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
 "'dimmed-zebra', 'plain'"
 msgstr ""
 
-#: diff.c:324
+#: 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'"
 msgstr ""
 
-#: diff.c:332
+#: diff.c:333
 msgid ""
 "color-moved-ws: allow-indentation-change cannot be combined with other "
 "whitespace modes"
 msgstr ""
 
-#: diff.c:405
+#: diff.c:410
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
 msgstr ""
 
-#: diff.c:465
+#: diff.c:470
 #, c-format
 msgid ""
 "Found errors in 'diff.dirstat' config variable:\n"
 "%s"
 msgstr ""
 
-#: diff.c:4238
+#: diff.c:4243
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr ""
 
-#: diff.c:4583
+#: diff.c:4589
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr ""
 
-#: diff.c:4586
+#: diff.c:4592
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr ""
 
-#: diff.c:4664
+#: diff.c:4670
 msgid "--follow requires exactly one pathspec"
 msgstr ""
 
-#: diff.c:4712
+#: diff.c:4718
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr ""
 
-#: diff.c:4717 diff.c:4722 diff.c:4727 diff.c:4732 diff.c:5245
+#: diff.c:4723 diff.c:4728 diff.c:4733 diff.c:4738 diff.c:5250
 #: parse-options.c:197 parse-options.c:201
 #, c-format
 msgid "%s expects a numerical value"
 msgstr ""
 
-#: diff.c:4749
+#: diff.c:4755
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
 "%s"
 msgstr ""
 
-#: diff.c:4834
+#: diff.c:4840
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr ""
 
-#: diff.c:4858
+#: diff.c:4864
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr ""
 
-#: diff.c:4872
+#: diff.c:4878
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr ""
 
-#: diff.c:4922 diff.c:4928
+#: diff.c:4928 diff.c:4934
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr ""
 
-#: diff.c:4940
+#: diff.c:4946
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr ""
 
-#: diff.c:4961
+#: diff.c:4967
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr ""
 
-#: diff.c:4980
+#: diff.c:4986
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr ""
 
-#: diff.c:5020
+#: diff.c:5026
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 msgstr ""
 
-#: diff.c:5056 diff.c:5076
+#: diff.c:5062 diff.c:5082
 #, c-format
 msgid "invalid argument to %s"
 msgstr ""
 
-#: diff.c:5214
+#: diff.c:5219
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr ""
 
-#: diff.c:5270
+#: diff.c:5275
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr ""
 
-#: diff.c:5293
+#: diff.c:5298
 msgid "Diff output format options"
 msgstr ""
 
-#: diff.c:5295 diff.c:5301
+#: diff.c:5300 diff.c:5306
 msgid "generate patch"
 msgstr ""
 
-#: diff.c:5298 builtin/log.c:177
+#: diff.c:5303 builtin/log.c:177
 msgid "suppress diff output"
 msgstr ""
 
-#: diff.c:5303 diff.c:5417 diff.c:5424
+#: diff.c:5308 diff.c:5422 diff.c:5429
 msgid "<n>"
 msgstr ""
 
-#: diff.c:5304 diff.c:5307
+#: diff.c:5309 diff.c:5312
 msgid "generate diffs with <n> lines context"
 msgstr ""
 
-#: diff.c:5309
+#: diff.c:5314
 msgid "generate the diff in raw format"
 msgstr ""
 
-#: diff.c:5312
+#: diff.c:5317
 msgid "synonym for '-p --raw'"
 msgstr ""
 
-#: diff.c:5316
+#: diff.c:5321
 msgid "synonym for '-p --stat'"
 msgstr ""
 
-#: diff.c:5320
+#: diff.c:5325
 msgid "machine friendly --stat"
 msgstr ""
 
-#: diff.c:5323
+#: diff.c:5328
 msgid "output only the last line of --stat"
 msgstr ""
 
-#: diff.c:5325 diff.c:5333
+#: diff.c:5330 diff.c:5338
 msgid "<param1,param2>..."
 msgstr ""
 
-#: diff.c:5326
+#: diff.c:5331
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 
-#: diff.c:5330
+#: diff.c:5335
 msgid "synonym for --dirstat=cumulative"
 msgstr ""
 
-#: diff.c:5334
+#: diff.c:5339
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr ""
 
-#: diff.c:5338
+#: diff.c:5343
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 
-#: diff.c:5341
+#: diff.c:5346
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 
-#: diff.c:5344
+#: diff.c:5349
 msgid "show only names of changed files"
 msgstr ""
 
-#: diff.c:5347
+#: diff.c:5352
 msgid "show only names and status of changed files"
 msgstr ""
 
-#: diff.c:5349
+#: diff.c:5354
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr ""
 
-#: diff.c:5350
+#: diff.c:5355
 msgid "generate diffstat"
 msgstr ""
 
-#: diff.c:5352 diff.c:5355 diff.c:5358
+#: diff.c:5357 diff.c:5360 diff.c:5363
 msgid "<width>"
 msgstr ""
 
-#: diff.c:5353
+#: diff.c:5358
 msgid "generate diffstat with a given width"
 msgstr ""
 
-#: diff.c:5356
+#: diff.c:5361
 msgid "generate diffstat with a given name width"
 msgstr ""
 
-#: diff.c:5359
+#: diff.c:5364
 msgid "generate diffstat with a given graph width"
 msgstr ""
 
-#: diff.c:5361
+#: diff.c:5366
 msgid "<count>"
 msgstr ""
 
-#: diff.c:5362
+#: diff.c:5367
 msgid "generate diffstat with limited lines"
 msgstr ""
 
-#: diff.c:5365
+#: diff.c:5370
 msgid "generate compact summary in diffstat"
 msgstr ""
 
-#: diff.c:5368
+#: diff.c:5373
 msgid "output a binary diff that can be applied"
 msgstr ""
 
-#: diff.c:5371
+#: diff.c:5376
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr ""
 
-#: diff.c:5373
+#: diff.c:5378
 msgid "show colored diff"
 msgstr ""
 
-#: diff.c:5374
+#: diff.c:5379
 msgid "<kind>"
 msgstr ""
 
-#: diff.c:5375
+#: diff.c:5380
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr ""
 
-#: diff.c:5378
+#: diff.c:5383
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
 msgstr ""
 
-#: diff.c:5381 diff.c:5384 diff.c:5387 diff.c:5493
+#: diff.c:5386 diff.c:5389 diff.c:5392 diff.c:5498
 msgid "<prefix>"
 msgstr ""
 
-#: diff.c:5382
+#: diff.c:5387
 msgid "show the given source prefix instead of \"a/\""
 msgstr ""
 
-#: diff.c:5385
+#: diff.c:5390
 msgid "show the given destination prefix instead of \"b/\""
 msgstr ""
 
-#: diff.c:5388
+#: diff.c:5393
 msgid "prepend an additional prefix to every line of output"
 msgstr ""
 
-#: diff.c:5391
+#: diff.c:5396
 msgid "do not show any source or destination prefix"
 msgstr ""
 
-#: diff.c:5394
+#: diff.c:5399
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 
-#: diff.c:5398 diff.c:5403 diff.c:5408
+#: diff.c:5403 diff.c:5408 diff.c:5413
 msgid "<char>"
 msgstr ""
 
-#: diff.c:5399
+#: diff.c:5404
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr ""
 
-#: diff.c:5404
+#: diff.c:5409
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr ""
 
-#: diff.c:5409
+#: diff.c:5414
 msgid "specify the character to indicate a context instead of ' '"
 msgstr ""
 
-#: diff.c:5412
+#: diff.c:5417
 msgid "Diff rename options"
 msgstr ""
 
-#: diff.c:5413
+#: diff.c:5418
 msgid "<n>[/<m>]"
 msgstr ""
 
-#: diff.c:5414
+#: diff.c:5419
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr ""
 
-#: diff.c:5418
+#: diff.c:5423
 msgid "detect renames"
 msgstr ""
 
-#: diff.c:5422
+#: diff.c:5427
 msgid "omit the preimage for deletes"
 msgstr ""
 
-#: diff.c:5425
+#: diff.c:5430
 msgid "detect copies"
 msgstr ""
 
-#: diff.c:5429
+#: diff.c:5434
 msgid "use unmodified files as source to find copies"
 msgstr ""
 
-#: diff.c:5431
+#: diff.c:5436
 msgid "disable rename detection"
 msgstr ""
 
-#: diff.c:5434
+#: diff.c:5439
 msgid "use empty blobs as rename source"
 msgstr ""
 
-#: diff.c:5436
+#: diff.c:5441
 msgid "continue listing the history of a file beyond renames"
 msgstr ""
 
-#: diff.c:5439
+#: diff.c:5444
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr ""
 
-#: diff.c:5441
+#: diff.c:5446
 msgid "Diff algorithm options"
 msgstr ""
 
-#: diff.c:5443
+#: diff.c:5448
 msgid "produce the smallest possible diff"
 msgstr ""
 
-#: diff.c:5446
+#: diff.c:5451
 msgid "ignore whitespace when comparing lines"
 msgstr ""
 
-#: diff.c:5449
+#: diff.c:5454
 msgid "ignore changes in amount of whitespace"
 msgstr ""
 
-#: diff.c:5452
+#: diff.c:5457
 msgid "ignore changes in whitespace at EOL"
 msgstr ""
 
-#: diff.c:5455
+#: diff.c:5460
 msgid "ignore carrier-return at the end of line"
 msgstr ""
 
-#: diff.c:5458
+#: diff.c:5463
 msgid "ignore changes whose lines are all blank"
 msgstr ""
 
-#: diff.c:5461
+#: diff.c:5466
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
 
-#: diff.c:5464
+#: diff.c:5469
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr ""
 
-#: diff.c:5468
+#: diff.c:5473
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr ""
 
-#: diff.c:5470
+#: diff.c:5475
 msgid "<algorithm>"
 msgstr ""
 
-#: diff.c:5471
+#: diff.c:5476
 msgid "choose a diff algorithm"
 msgstr ""
 
-#: diff.c:5473
+#: diff.c:5478
 msgid "<text>"
 msgstr ""
 
-#: diff.c:5474
+#: diff.c:5479
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr ""
 
-#: diff.c:5476 diff.c:5485 diff.c:5488
+#: diff.c:5481 diff.c:5490 diff.c:5493
 msgid "<mode>"
 msgstr ""
 
-#: diff.c:5477
+#: diff.c:5482
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 
-#: diff.c:5479 diff.c:5482 diff.c:5527
+#: diff.c:5484 diff.c:5487 diff.c:5532
 msgid "<regex>"
 msgstr ""
 
-#: diff.c:5480
+#: diff.c:5485
 msgid "use <regex> to decide what a word is"
 msgstr ""
 
-#: diff.c:5483
+#: diff.c:5488
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr ""
 
-#: diff.c:5486
+#: diff.c:5491
 msgid "moved lines of code are colored differently"
 msgstr ""
 
-#: diff.c:5489
+#: diff.c:5494
 msgid "how white spaces are ignored in --color-moved"
 msgstr ""
 
-#: diff.c:5492
+#: diff.c:5497
 msgid "Other diff options"
 msgstr ""
 
-#: diff.c:5494
+#: diff.c:5499
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 
-#: diff.c:5498
+#: diff.c:5503
 msgid "treat all files as text"
 msgstr ""
 
-#: diff.c:5500
+#: diff.c:5505
 msgid "swap two inputs, reverse the diff"
 msgstr ""
 
-#: diff.c:5502
+#: diff.c:5507
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr ""
 
-#: diff.c:5504
+#: diff.c:5509
 msgid "disable all output of the program"
 msgstr ""
 
-#: diff.c:5506
+#: diff.c:5511
 msgid "allow an external diff helper to be executed"
 msgstr ""
 
-#: diff.c:5508
+#: diff.c:5513
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 
-#: diff.c:5510
+#: diff.c:5515
 msgid "<when>"
 msgstr ""
 
-#: diff.c:5511
+#: diff.c:5516
 msgid "ignore changes to submodules in the diff generation"
 msgstr ""
 
-#: diff.c:5514
+#: diff.c:5519
 msgid "<format>"
 msgstr ""
 
-#: diff.c:5515
+#: diff.c:5520
 msgid "specify how differences in submodules are shown"
 msgstr ""
 
-#: diff.c:5519
+#: diff.c:5524
 msgid "hide 'git add -N' entries from the index"
 msgstr ""
 
-#: diff.c:5522
+#: diff.c:5527
 msgid "treat 'git add -N' entries as real in the index"
 msgstr ""
 
-#: diff.c:5524
+#: diff.c:5529
 msgid "<string>"
 msgstr ""
 
-#: diff.c:5525
+#: diff.c:5530
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr ""
 
-#: diff.c:5528
+#: diff.c:5533
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr ""
 
-#: diff.c:5531
+#: diff.c:5536
 msgid "show all changes in the changeset with -S or -G"
 msgstr ""
 
-#: diff.c:5534
+#: diff.c:5539
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr ""
 
-#: diff.c:5537
+#: diff.c:5542
 msgid "control the order in which files appear in the output"
 msgstr ""
 
-#: diff.c:5538
+#: diff.c:5543
 msgid "<object-id>"
 msgstr ""
 
-#: diff.c:5539
+#: diff.c:5544
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr ""
 
-#: diff.c:5541
+#: diff.c:5546
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr ""
 
-#: diff.c:5542
+#: diff.c:5547
 msgid "select files by diff type"
 msgstr ""
 
-#: diff.c:5544
+#: diff.c:5549
 msgid "<file>"
 msgstr ""
 
-#: diff.c:5545
+#: diff.c:5550
 msgid "Output to a specific file"
 msgstr ""
 
-#: diff.c:6200
+#: diff.c:6205
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 
-#: diff.c:6203
+#: diff.c:6208
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 
-#: diff.c:6206
+#: diff.c:6211
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3473,59 +3514,59 @@
 msgid "Performing inexact rename detection"
 msgstr ""
 
-#: dir.c:555
+#: dir.c:573
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr ""
 
-#: dir.c:695 dir.c:724 dir.c:737
+#: dir.c:713 dir.c:742 dir.c:755
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr ""
 
-#: dir.c:754 dir.c:768
+#: dir.c:772 dir.c:786
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr ""
 
-#: dir.c:786
+#: dir.c:804
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr ""
 
-#: dir.c:796
+#: dir.c:814
 msgid "disabling cone pattern matching"
 msgstr ""
 
-#: dir.c:1173
+#: dir.c:1191
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr ""
 
-#: dir.c:2275
+#: dir.c:2296
 #, c-format
 msgid "could not open directory '%s'"
 msgstr ""
 
-#: dir.c:2575
+#: dir.c:2596
 msgid "failed to get kernel name and information"
 msgstr ""
 
-#: dir.c:2699
+#: dir.c:2720
 msgid "untracked cache is disabled on this system or location"
 msgstr ""
 
-#: dir.c:3481
+#: dir.c:3502
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr ""
 
-#: dir.c:3526 dir.c:3531
+#: dir.c:3547 dir.c:3552
 #, c-format
 msgid "could not create directories for %s"
 msgstr ""
 
-#: dir.c:3560
+#: dir.c:3581
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr ""
@@ -3535,11 +3576,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr ""
 
-#: entry.c:178
+#: entry.c:177
 msgid "Filtering content"
 msgstr ""
 
-#: entry.c:479
+#: entry.c:478
 #, c-format
 msgid "could not stat file '%s'"
 msgstr ""
@@ -3559,227 +3600,245 @@
 msgid "too many args to run %s"
 msgstr ""
 
-#: fetch-pack.c:151
+#: fetch-pack.c:152
 msgid "git fetch-pack: expected shallow list"
 msgstr ""
 
-#: fetch-pack.c:154
+#: fetch-pack.c:155
 msgid "git fetch-pack: expected a flush packet after shallow list"
 msgstr ""
 
-#: fetch-pack.c:165
+#: fetch-pack.c:166
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr ""
 
-#: fetch-pack.c:185
+#: fetch-pack.c:186
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr ""
 
-#: fetch-pack.c:196
+#: fetch-pack.c:197
 msgid "unable to write to remote"
 msgstr ""
 
-#: fetch-pack.c:258
+#: fetch-pack.c:259
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr ""
 
-#: fetch-pack.c:357 fetch-pack.c:1364
+#: fetch-pack.c:358 fetch-pack.c:1408
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr ""
 
-#: fetch-pack.c:363 fetch-pack.c:1370
+#: fetch-pack.c:364 fetch-pack.c:1414
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr ""
 
-#: fetch-pack.c:365 fetch-pack.c:1372
+#: fetch-pack.c:366 fetch-pack.c:1416
 #, c-format
 msgid "object not found: %s"
 msgstr ""
 
-#: fetch-pack.c:368 fetch-pack.c:1375
+#: fetch-pack.c:369 fetch-pack.c:1419
 #, c-format
 msgid "error in object: %s"
 msgstr ""
 
-#: fetch-pack.c:370 fetch-pack.c:1377
+#: fetch-pack.c:371 fetch-pack.c:1421
 #, c-format
 msgid "no shallow found: %s"
 msgstr ""
 
-#: fetch-pack.c:373 fetch-pack.c:1381
+#: fetch-pack.c:374 fetch-pack.c:1425
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr ""
 
-#: fetch-pack.c:415
+#: fetch-pack.c:416
 #, c-format
 msgid "got %s %d %s"
 msgstr ""
 
-#: fetch-pack.c:432
+#: fetch-pack.c:433
 #, c-format
 msgid "invalid commit %s"
 msgstr ""
 
-#: fetch-pack.c:463
+#: fetch-pack.c:464
 msgid "giving up"
 msgstr ""
 
-#: fetch-pack.c:476 progress.c:336
+#: fetch-pack.c:477 progress.c:336
 msgid "done"
 msgstr ""
 
-#: fetch-pack.c:488
+#: fetch-pack.c:489
 #, c-format
 msgid "got %s (%d) %s"
 msgstr ""
 
-#: fetch-pack.c:534
+#: fetch-pack.c:535
 #, c-format
 msgid "Marking %s as complete"
 msgstr ""
 
-#: fetch-pack.c:755
+#: fetch-pack.c:756
 #, c-format
 msgid "already have %s (%s)"
 msgstr ""
 
-#: fetch-pack.c:819
+#: fetch-pack.c:821
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr ""
 
-#: fetch-pack.c:827
+#: fetch-pack.c:829
 msgid "protocol error: bad pack header"
 msgstr ""
 
-#: fetch-pack.c:901
+#: fetch-pack.c:910
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr ""
 
-#: fetch-pack.c:917
+#: fetch-pack.c:927
 #, c-format
 msgid "%s failed"
 msgstr ""
 
-#: fetch-pack.c:919
+#: fetch-pack.c:929
 msgid "error in sideband demultiplexer"
 msgstr ""
 
-#: fetch-pack.c:966
+#: fetch-pack.c:976
 #, c-format
 msgid "Server version is %.*s"
 msgstr ""
 
-#: fetch-pack.c:971 fetch-pack.c:977 fetch-pack.c:980 fetch-pack.c:986
-#: fetch-pack.c:990 fetch-pack.c:994 fetch-pack.c:998 fetch-pack.c:1002
-#: fetch-pack.c:1006 fetch-pack.c:1010 fetch-pack.c:1014 fetch-pack.c:1018
-#: fetch-pack.c:1024 fetch-pack.c:1030 fetch-pack.c:1035 fetch-pack.c:1040
+#: fetch-pack.c:981 fetch-pack.c:987 fetch-pack.c:990 fetch-pack.c:996
+#: fetch-pack.c:1000 fetch-pack.c:1004 fetch-pack.c:1008 fetch-pack.c:1012
+#: fetch-pack.c:1016 fetch-pack.c:1020 fetch-pack.c:1024 fetch-pack.c:1028
+#: fetch-pack.c:1034 fetch-pack.c:1040 fetch-pack.c:1045 fetch-pack.c:1050
 #, c-format
 msgid "Server supports %s"
 msgstr ""
 
-#: fetch-pack.c:973
+#: fetch-pack.c:983
 msgid "Server does not support shallow clients"
 msgstr ""
 
-#: fetch-pack.c:1033
+#: fetch-pack.c:1043
 msgid "Server does not support --shallow-since"
 msgstr ""
 
-#: fetch-pack.c:1038
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-exclude"
 msgstr ""
 
-#: fetch-pack.c:1042
+#: fetch-pack.c:1052
 msgid "Server does not support --deepen"
 msgstr ""
 
-#: fetch-pack.c:1059
+#: fetch-pack.c:1054
+msgid "Server does not support this repository's object format"
+msgstr ""
+
+#: fetch-pack.c:1071
 msgid "no common commits"
 msgstr ""
 
-#: fetch-pack.c:1071 fetch-pack.c:1563
+#: fetch-pack.c:1083 fetch-pack.c:1639
 msgid "git fetch-pack: fetch failed."
 msgstr ""
 
 #: fetch-pack.c:1211
+#, c-format
+msgid "mismatched algorithms: client %s; server %s"
+msgstr ""
+
+#: fetch-pack.c:1215
+#, c-format
+msgid "the server does not support algorithm '%s'"
+msgstr ""
+
+#: fetch-pack.c:1235
 msgid "Server does not support shallow requests"
 msgstr ""
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1242
 msgid "Server supports filter"
 msgstr ""
 
-#: fetch-pack.c:1242
+#: fetch-pack.c:1286
 msgid "unable to write request to remote"
 msgstr ""
 
-#: fetch-pack.c:1260
+#: fetch-pack.c:1304
 #, c-format
 msgid "error reading section header '%s'"
 msgstr ""
 
-#: fetch-pack.c:1266
+#: fetch-pack.c:1310
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr ""
 
-#: fetch-pack.c:1327
+#: fetch-pack.c:1371
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr ""
 
-#: fetch-pack.c:1332
+#: fetch-pack.c:1376
 #, c-format
 msgid "error processing acks: %d"
 msgstr ""
 
-#: fetch-pack.c:1342
+#: fetch-pack.c:1386
 msgid "expected packfile to be sent after 'ready'"
 msgstr ""
 
-#: fetch-pack.c:1344
+#: fetch-pack.c:1388
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr ""
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1430
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr ""
 
-#: fetch-pack.c:1433
+#: fetch-pack.c:1477
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr ""
 
-#: fetch-pack.c:1438
+#: fetch-pack.c:1482
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr ""
 
-#: fetch-pack.c:1443
+#: fetch-pack.c:1487
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr ""
 
-#: fetch-pack.c:1789
+#: fetch-pack.c:1517
+msgid "git fetch-pack: expected response end packet"
+msgstr ""
+
+#: fetch-pack.c:1921
 msgid "no matching remote head"
 msgstr ""
 
-#: fetch-pack.c:1812 builtin/clone.c:692
+#: fetch-pack.c:1944 builtin/clone.c:692
 msgid "remote did not send all necessary objects"
 msgstr ""
 
-#: fetch-pack.c:1839
+#: fetch-pack.c:1971
 #, c-format
 msgid "no such remote ref %s"
 msgstr ""
 
-#: fetch-pack.c:1842
+#: fetch-pack.c:1974
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr ""
@@ -3813,7 +3872,7 @@
 msgid "'%s': unable to read %s"
 msgstr ""
 
-#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:82
+#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:89
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
@@ -3951,16 +4010,16 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: help.c:653
+#: help.c:654
 msgid "git version [<options>]"
 msgstr ""
 
-#: help.c:708
+#: help.c:709
 #, c-format
 msgid "%s: %s - %s"
 msgstr ""
 
-#: help.c:712
+#: help.c:713
 msgid ""
 "\n"
 "Did you mean this?"
@@ -4044,6 +4103,10 @@
 msgid "multiple filter-specs cannot be combined"
 msgstr ""
 
+#: list-objects-filter-options.c:330
+msgid "unable to upgrade repository format to support partial clone"
+msgstr ""
+
 #: list-objects-filter.c:492
 #, c-format
 msgid "unable to access sparse blob in '%s'"
@@ -4366,7 +4429,7 @@
 msgid "Skipped %s (merged same as existing)"
 msgstr ""
 
-#: merge-recursive.c:3101 git-submodule.sh:985
+#: merge-recursive.c:3101 git-submodule.sh:959
 msgid "submodule"
 msgstr ""
 
@@ -4481,7 +4544,7 @@
 msgstr ""
 
 #: merge.c:108 rerere.c:720 builtin/am.c:1878 builtin/am.c:1912
-#: builtin/checkout.c:559 builtin/checkout.c:824 builtin/clone.c:816
+#: builtin/checkout.c:559 builtin/checkout.c:822 builtin/clone.c:816
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr ""
@@ -4723,21 +4786,21 @@
 msgid "hash mismatch %s"
 msgstr ""
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2135
+#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2184
 #, c-format
 msgid "unable to get size of %s"
 msgstr ""
 
-#: packfile.c:629
+#: packfile.c:630
 msgid "offset before end of packfile (broken .idx?)"
 msgstr ""
 
-#: packfile.c:1899
+#: packfile.c:1900
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr ""
 
-#: packfile.c:1903
+#: packfile.c:1904
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
@@ -4938,44 +5001,48 @@
 msgstr ""
 
 #: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr ""
+
+#: pkt-line.c:113
 msgid "flush packet write failed"
 msgstr ""
 
-#: pkt-line.c:146 pkt-line.c:232
+#: pkt-line.c:153 pkt-line.c:239
 msgid "protocol error: impossibly long line"
 msgstr ""
 
-#: pkt-line.c:162 pkt-line.c:164
+#: pkt-line.c:169 pkt-line.c:171
 msgid "packet write with format failed"
 msgstr ""
 
-#: pkt-line.c:196
+#: pkt-line.c:203
 msgid "packet write failed - data exceeds max packet size"
 msgstr ""
 
-#: pkt-line.c:203 pkt-line.c:210
+#: pkt-line.c:210 pkt-line.c:217
 msgid "packet write failed"
 msgstr ""
 
-#: pkt-line.c:295
+#: pkt-line.c:302
 msgid "read error"
 msgstr ""
 
-#: pkt-line.c:303
+#: pkt-line.c:310
 msgid "the remote end hung up unexpectedly"
 msgstr ""
 
-#: pkt-line.c:331
+#: pkt-line.c:338
 #, c-format
 msgid "protocol error: bad line length character: %.4s"
 msgstr ""
 
-#: pkt-line.c:341 pkt-line.c:346
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
 msgid "protocol error: bad line length %d"
 msgstr ""
 
-#: pkt-line.c:362
+#: pkt-line.c:373
 #, c-format
 msgid "remote error: %s"
 msgstr ""
@@ -5147,7 +5214,7 @@
 
 #: read-cache.c:1983 read-cache.c:2271 rerere.c:565 rerere.c:599 rerere.c:1111
 #: submodule.c:1619 builtin/add.c:532 builtin/check-ignore.c:181
-#: builtin/checkout.c:488 builtin/checkout.c:676 builtin/clean.c:961
+#: builtin/checkout.c:488 builtin/checkout.c:674 builtin/clean.c:991
 #: builtin/commit.c:364 builtin/diff-tree.c:121 builtin/grep.c:507
 #: builtin/mv.c:145 builtin/reset.c:247 builtin/rm.c:290
 #: builtin/submodule--helper.c:332
@@ -5204,7 +5271,7 @@
 msgid "broken index, expect %s in %s, got %s"
 msgstr ""
 
-#: read-cache.c:3026 strbuf.c:1176 wrapper.c:622 builtin/merge.c:1130
+#: read-cache.c:3026 strbuf.c:1171 wrapper.c:630 builtin/merge.c:1130
 #, c-format
 msgid "could not close '%s'"
 msgstr ""
@@ -5341,7 +5408,7 @@
 msgid "could not read '%s'."
 msgstr ""
 
-#: ref-filter.c:42 wt-status.c:1936
+#: ref-filter.c:42 wt-status.c:1977
 msgid "gone"
 msgstr ""
 
@@ -5565,7 +5632,7 @@
 msgid "ignoring ref with broken name %s"
 msgstr ""
 
-#: ref-filter.c:2095 refs.c:625
+#: ref-filter.c:2095 refs.c:657
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr ""
@@ -5595,94 +5662,108 @@
 msgid "option `%s' must point to a commit"
 msgstr ""
 
-#: refs.c:262
+#: refs.c:264
 #, c-format
 msgid "%s does not point to a valid object!"
 msgstr ""
 
-#: refs.c:623
+#: refs.c:572
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr ""
+
+#: refs.c:579
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr ""
+
+#: refs.c:655
 #, c-format
 msgid "ignoring dangling symref %s"
 msgstr ""
 
-#: refs.c:760
+#: refs.c:792
 #, c-format
 msgid "could not open '%s' for writing: %s"
 msgstr ""
 
-#: refs.c:770 refs.c:821
+#: refs.c:802 refs.c:853
 #, c-format
 msgid "could not read ref '%s'"
 msgstr ""
 
-#: refs.c:776
+#: refs.c:808
 #, c-format
 msgid "ref '%s' already exists"
 msgstr ""
 
-#: refs.c:781
+#: refs.c:813
 #, c-format
 msgid "unexpected object ID when writing '%s'"
 msgstr ""
 
-#: refs.c:789 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
-#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1173
-#: wrapper.c:620
+#: refs.c:821 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
+#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1168
+#: wrapper.c:628
 #, c-format
 msgid "could not write to '%s'"
 msgstr ""
 
-#: refs.c:816 strbuf.c:1171 wrapper.c:188 wrapper.c:358 builtin/am.c:719
+#: refs.c:848 strbuf.c:1166 wrapper.c:196 wrapper.c:366 builtin/am.c:719
 #: builtin/rebase.c:852
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr ""
 
-#: refs.c:823
+#: refs.c:855
 #, c-format
 msgid "unexpected object ID when deleting '%s'"
 msgstr ""
 
-#: refs.c:954
+#: refs.c:986
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr ""
 
-#: refs.c:960
+#: refs.c:992
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr ""
 
-#: refs.c:1019
+#: refs.c:1051
 #, c-format
 msgid "log for %s is empty"
 msgstr ""
 
-#: refs.c:1111
+#: refs.c:1143
 #, c-format
 msgid "refusing to update ref with bad name '%s'"
 msgstr ""
 
-#: refs.c:1187
+#: refs.c:1219
 #, c-format
 msgid "update_ref failed for ref '%s': %s"
 msgstr ""
 
-#: refs.c:1979
+#: refs.c:2011
 #, c-format
 msgid "multiple updates for ref '%s' not allowed"
 msgstr ""
 
-#: refs.c:2011
+#: refs.c:2098
 msgid "ref updates forbidden inside quarantine environment"
 msgstr ""
 
-#: refs.c:2107 refs.c:2137
+#: refs.c:2109
+msgid "ref updates aborted by hook"
+msgstr ""
+
+#: refs.c:2209 refs.c:2239
 #, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr ""
 
-#: refs.c:2113 refs.c:2148
+#: refs.c:2215 refs.c:2250
 #, c-format
 msgid "cannot process '%s' and '%s' at the same time"
 msgstr ""
@@ -5940,7 +6021,7 @@
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr ""
 
-#: remote.c:2233
+#: remote.c:2241
 #, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr ""
@@ -6067,20 +6148,20 @@
 msgid "failed to find tree of %s"
 msgstr ""
 
-#: revision.c:2655
+#: revision.c:2661
 msgid "your current branch appears to be broken"
 msgstr ""
 
-#: revision.c:2658
+#: revision.c:2664
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr ""
 
-#: revision.c:2866
+#: revision.c:2873
 msgid "--first-parent is incompatible with --bisect"
 msgstr ""
 
-#: revision.c:2870
+#: revision.c:2877
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr ""
 
@@ -6118,21 +6199,25 @@
 msgid "failed to sign the push certificate"
 msgstr ""
 
-#: send-pack.c:399
+#: send-pack.c:394
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr ""
+
+#: send-pack.c:403
 msgid "the receiving end does not support --signed push"
 msgstr ""
 
-#: send-pack.c:401
+#: send-pack.c:405
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
 msgstr ""
 
-#: send-pack.c:413
+#: send-pack.c:417
 msgid "the receiving end does not support --atomic push"
 msgstr ""
 
-#: send-pack.c:418
+#: send-pack.c:422
 msgid "the receiving end does not support push options"
 msgstr ""
 
@@ -6248,7 +6333,7 @@
 msgid "unable to dequote value of '%s'"
 msgstr ""
 
-#: sequencer.c:785 wrapper.c:190 wrapper.c:360 builtin/am.c:710
+#: sequencer.c:785 wrapper.c:198 wrapper.c:368 builtin/am.c:710
 #: builtin/am.c:802 builtin/merge.c:1125 builtin/rebase.c:896
 #, c-format
 msgid "could not open '%s' for reading"
@@ -7005,106 +7090,106 @@
 msgid "this operation must be run in a work tree"
 msgstr ""
 
-#: setup.c:569
+#: setup.c:604
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr ""
 
-#: setup.c:577
+#: setup.c:612
 msgid "unknown repository extensions found:"
 msgstr ""
 
-#: setup.c:596
+#: setup.c:631
 #, c-format
 msgid "error opening '%s'"
 msgstr ""
 
-#: setup.c:598
+#: setup.c:633
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr ""
 
-#: setup.c:600
+#: setup.c:635
 #, c-format
 msgid "error reading %s"
 msgstr ""
 
-#: setup.c:602
+#: setup.c:637
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr ""
 
-#: setup.c:604
+#: setup.c:639
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr ""
 
-#: setup.c:606
+#: setup.c:641
 #, c-format
 msgid "not a git repository: %s"
 msgstr ""
 
-#: setup.c:708
+#: setup.c:743
 #, c-format
 msgid "'$%s' too big"
 msgstr ""
 
-#: setup.c:722
+#: setup.c:757
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr ""
 
-#: setup.c:751 setup.c:753 setup.c:784
+#: setup.c:786 setup.c:788 setup.c:819
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr ""
 
-#: setup.c:756 setup.c:812 setup.c:822 setup.c:861 setup.c:869
+#: setup.c:791 setup.c:847 setup.c:857 setup.c:896 setup.c:904
 msgid "cannot come back to cwd"
 msgstr ""
 
-#: setup.c:883
+#: setup.c:918
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr ""
 
-#: setup.c:1121
+#: setup.c:1156
 msgid "Unable to read current working directory"
 msgstr ""
 
-#: setup.c:1130 setup.c:1136
+#: setup.c:1165 setup.c:1171
 #, c-format
 msgid "cannot change to '%s'"
 msgstr ""
 
-#: setup.c:1141
+#: setup.c:1176
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr ""
 
-#: setup.c:1147
+#: setup.c:1182
 #, 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:1258
+#: setup.c:1293
 #, 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:1304
+#: setup.c:1340
 msgid "open /dev/null or dup failed"
 msgstr ""
 
-#: setup.c:1319
+#: setup.c:1355
 msgid "fork failed"
 msgstr ""
 
-#: setup.c:1324
+#: setup.c:1360
 msgid "setsid failed"
 msgstr ""
 
@@ -7284,7 +7369,7 @@
 msgid "confused by unstable object source data for %s"
 msgstr ""
 
-#: sha1-file.c:1906 builtin/pack-objects.c:1055
+#: sha1-file.c:1906 builtin/pack-objects.c:1085
 #, c-format
 msgid "failed utime() on %s"
 msgstr ""
@@ -7445,43 +7530,43 @@
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
-#: strbuf.c:853
+#: strbuf.c:848
 #, c-format
 msgid "%u.%2.2u GiB"
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
-#: strbuf.c:855
+#: strbuf.c:850
 #, c-format
 msgid "%u.%2.2u GiB/s"
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte
-#: strbuf.c:863
+#: strbuf.c:858
 #, c-format
 msgid "%u.%2.2u MiB"
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
-#: strbuf.c:865
+#: strbuf.c:860
 #, c-format
 msgid "%u.%2.2u MiB/s"
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte
-#: strbuf.c:872
+#: strbuf.c:867
 #, c-format
 msgid "%u.%2.2u KiB"
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
-#: strbuf.c:874
+#: strbuf.c:869
 #, c-format
 msgid "%u.%2.2u KiB/s"
 msgstr ""
 
 #. TRANSLATORS: IEC 80000-13:2008 byte
-#: strbuf.c:880
+#: strbuf.c:875
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -7489,14 +7574,14 @@
 msgstr[1] ""
 
 #. TRANSLATORS: IEC 80000-13:2008 byte/second
-#: strbuf.c:882
+#: strbuf.c:877
 #, c-format
 msgid "%u byte/s"
 msgid_plural "%u bytes/s"
 msgstr[0] ""
 msgstr[1] ""
 
-#: strbuf.c:1180
+#: strbuf.c:1175
 #, c-format
 msgid "could not edit '%s'"
 msgstr ""
@@ -7730,7 +7815,7 @@
 msgid "could not read from stdin"
 msgstr ""
 
-#: trailer.c:1011 wrapper.c:665
+#: trailer.c:1011 wrapper.c:673
 #, c-format
 msgid "could not stat %s"
 msgstr ""
@@ -7754,175 +7839,180 @@
 msgid "could not rename temporary file to %s"
 msgstr ""
 
-#: transport-helper.c:61 transport-helper.c:90
+#: transport-helper.c:62 transport-helper.c:91
 msgid "full write to remote helper failed"
 msgstr ""
 
-#: transport-helper.c:144
+#: transport-helper.c:145
 #, c-format
 msgid "unable to find remote helper for '%s'"
 msgstr ""
 
-#: transport-helper.c:160 transport-helper.c:571
+#: transport-helper.c:161 transport-helper.c:575
 msgid "can't dup helper output fd"
 msgstr ""
 
-#: transport-helper.c:211
+#: transport-helper.c:214
 #, c-format
 msgid ""
 "unknown mandatory capability %s; this remote helper probably needs newer "
 "version of Git"
 msgstr ""
 
-#: transport-helper.c:217
+#: transport-helper.c:220
 msgid "this remote helper should implement refspec capability"
 msgstr ""
 
-#: transport-helper.c:284 transport-helper.c:425
+#: transport-helper.c:287 transport-helper.c:429
 #, c-format
 msgid "%s unexpectedly said: '%s'"
 msgstr ""
 
-#: transport-helper.c:414
+#: transport-helper.c:417
 #, c-format
 msgid "%s also locked %s"
 msgstr ""
 
-#: transport-helper.c:493
+#: transport-helper.c:497
 msgid "couldn't run fast-import"
 msgstr ""
 
-#: transport-helper.c:516
+#: transport-helper.c:520
 msgid "error while running fast-import"
 msgstr ""
 
-#: transport-helper.c:545 transport-helper.c:1135
+#: transport-helper.c:549 transport-helper.c:1156
 #, c-format
 msgid "could not read ref %s"
 msgstr ""
 
-#: transport-helper.c:590
+#: transport-helper.c:594
 #, c-format
 msgid "unknown response to connect: %s"
 msgstr ""
 
-#: transport-helper.c:612
+#: transport-helper.c:616
 msgid "setting remote service path not supported by protocol"
 msgstr ""
 
-#: transport-helper.c:614
+#: transport-helper.c:618
 msgid "invalid remote service path"
 msgstr ""
 
-#: transport-helper.c:657 transport.c:1339
+#: transport-helper.c:661 transport.c:1347
 msgid "operation not supported by protocol"
 msgstr ""
 
-#: transport-helper.c:660
+#: transport-helper.c:664
 #, c-format
 msgid "can't connect to subservice %s"
 msgstr ""
 
-#: transport-helper.c:736
+#: transport-helper.c:740
 #, c-format
 msgid "expected ok/error, helper said '%s'"
 msgstr ""
 
-#: transport-helper.c:789
+#: transport-helper.c:793
 #, c-format
 msgid "helper reported unexpected status of %s"
 msgstr ""
 
-#: transport-helper.c:850
+#: transport-helper.c:854
 #, c-format
 msgid "helper %s does not support dry-run"
 msgstr ""
 
-#: transport-helper.c:853
+#: transport-helper.c:857
 #, c-format
 msgid "helper %s does not support --signed"
 msgstr ""
 
-#: transport-helper.c:856
+#: transport-helper.c:860
 #, c-format
 msgid "helper %s does not support --signed=if-asked"
 msgstr ""
 
-#: transport-helper.c:861
+#: transport-helper.c:865
 #, c-format
 msgid "helper %s does not support --atomic"
 msgstr ""
 
-#: transport-helper.c:867
+#: transport-helper.c:871
 #, c-format
 msgid "helper %s does not support 'push-option'"
 msgstr ""
 
-#: transport-helper.c:966
+#: transport-helper.c:970
 msgid "remote-helper doesn't support push; refspec needed"
 msgstr ""
 
-#: transport-helper.c:971
+#: transport-helper.c:975
 #, c-format
 msgid "helper %s does not support 'force'"
 msgstr ""
 
-#: transport-helper.c:1018
+#: transport-helper.c:1022
 msgid "couldn't run fast-export"
 msgstr ""
 
-#: transport-helper.c:1023
+#: transport-helper.c:1027
 msgid "error while running fast-export"
 msgstr ""
 
-#: transport-helper.c:1048
+#: transport-helper.c:1052
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
-"Perhaps you should specify a branch such as 'master'.\n"
+"Perhaps you should specify a branch.\n"
 msgstr ""
 
-#: transport-helper.c:1121
+#: transport-helper.c:1133
+#, c-format
+msgid "unsupported object format '%s'"
+msgstr ""
+
+#: transport-helper.c:1142
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr ""
 
-#: transport-helper.c:1273
+#: transport-helper.c:1294
 #, c-format
 msgid "read(%s) failed"
 msgstr ""
 
-#: transport-helper.c:1300
+#: transport-helper.c:1321
 #, c-format
 msgid "write(%s) failed"
 msgstr ""
 
-#: transport-helper.c:1349
+#: transport-helper.c:1370
 #, c-format
 msgid "%s thread failed"
 msgstr ""
 
-#: transport-helper.c:1353
+#: transport-helper.c:1374
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr ""
 
-#: transport-helper.c:1372 transport-helper.c:1376
+#: transport-helper.c:1393 transport-helper.c:1397
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr ""
 
-#: transport-helper.c:1413
+#: transport-helper.c:1434
 #, c-format
 msgid "%s process failed to wait"
 msgstr ""
 
-#: transport-helper.c:1417
+#: transport-helper.c:1438
 #, c-format
 msgid "%s process failed"
 msgstr ""
 
-#: transport-helper.c:1435 transport-helper.c:1444
+#: transport-helper.c:1456 transport-helper.c:1465
 msgid "can't start thread for copying data"
 msgstr ""
 
@@ -7936,33 +8026,33 @@
 msgid "could not read bundle '%s'"
 msgstr ""
 
-#: transport.c:214
+#: transport.c:220
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr ""
 
-#: transport.c:266
+#: transport.c:272
 msgid "see protocol.version in 'git help config' for more details"
 msgstr ""
 
-#: transport.c:267
+#: transport.c:273
 msgid "server options require protocol version 2 or later"
 msgstr ""
 
-#: transport.c:632
+#: transport.c:631
 msgid "could not parse transport.color.* config"
 msgstr ""
 
-#: transport.c:705
+#: transport.c:704
 msgid "support for protocol v2 not implemented yet"
 msgstr ""
 
-#: transport.c:839
+#: transport.c:838
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr ""
 
-#: transport.c:905
+#: transport.c:904
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr ""
@@ -7971,14 +8061,14 @@
 msgid "git-over-rsync is no longer supported"
 msgstr ""
 
-#: transport.c:1052
+#: transport.c:1059
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
 "not be found on any remote:\n"
 msgstr ""
 
-#: transport.c:1056
+#: transport.c:1063
 #, c-format
 msgid ""
 "\n"
@@ -7994,11 +8084,11 @@
 "\n"
 msgstr ""
 
-#: transport.c:1064
+#: transport.c:1071
 msgid "Aborting."
 msgstr ""
 
-#: transport.c:1209
+#: transport.c:1216
 msgid "failed to push all needed submodules"
 msgstr ""
 
@@ -8215,7 +8305,7 @@
 msgid "Updating index flags"
 msgstr ""
 
-#: upload-pack.c:1337
+#: upload-pack.c:1415
 msgid "expected flush after fetch arguments"
 msgstr ""
 
@@ -8252,47 +8342,47 @@
 msgid "Fetching objects"
 msgstr ""
 
-#: worktree.c:262 builtin/am.c:2098
+#: worktree.c:248 builtin/am.c:2098
 #, c-format
 msgid "failed to read '%s'"
 msgstr ""
 
-#: worktree.c:309
+#: worktree.c:295
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr ""
 
-#: worktree.c:320
+#: worktree.c:306
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 
-#: worktree.c:332
+#: worktree.c:318
 #, c-format
 msgid "'%s' does not exist"
 msgstr ""
 
-#: worktree.c:338
+#: worktree.c:324
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr ""
 
-#: worktree.c:347
+#: worktree.c:333
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr ""
 
-#: wrapper.c:186 wrapper.c:356
+#: wrapper.c:194 wrapper.c:364
 #, c-format
 msgid "could not open '%s' for reading and writing"
 msgstr ""
 
-#: wrapper.c:387 wrapper.c:588
+#: wrapper.c:395 wrapper.c:596
 #, c-format
 msgid "unable to access '%s'"
 msgstr ""
 
-#: wrapper.c:596
+#: wrapper.c:604
 msgid "unable to get current working directory"
 msgstr ""
 
@@ -8659,39 +8749,44 @@
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr ""
 
-#: wt-status.c:1692
+#: wt-status.c:1494
+#, c-format
+msgid "You are in a sparse checkout with %d%% of tracked files present."
+msgstr ""
+
+#: wt-status.c:1733
 msgid "On branch "
 msgstr ""
 
-#: wt-status.c:1699
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr ""
 
-#: wt-status.c:1701
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr ""
 
-#: wt-status.c:1711
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr ""
 
-#: wt-status.c:1728
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr ""
 
-#: wt-status.c:1729
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr ""
 
-#: wt-status.c:1743
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr ""
 
-#: wt-status.c:1745
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr ""
 
-#: wt-status.c:1749
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -8699,92 +8794,92 @@
 "new files yourself (see 'git help status')."
 msgstr ""
 
-#: wt-status.c:1755
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr ""
 
-#: wt-status.c:1757
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr ""
 
-#: wt-status.c:1763
+#: wt-status.c:1804
 msgid "No changes"
 msgstr ""
 
-#: wt-status.c:1768
+#: wt-status.c:1809
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 
-#: wt-status.c:1771
+#: wt-status.c:1812
 #, c-format
 msgid "no changes added to commit\n"
 msgstr ""
 
-#: wt-status.c:1774
+#: wt-status.c:1815
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr ""
 
-#: wt-status.c:1777
+#: wt-status.c:1818
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr ""
 
-#: wt-status.c:1780
+#: wt-status.c:1821
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 
-#: wt-status.c:1783 wt-status.c:1788
+#: wt-status.c:1824 wt-status.c:1829
 #, c-format
 msgid "nothing to commit\n"
 msgstr ""
 
-#: wt-status.c:1786
+#: wt-status.c:1827
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 
-#: wt-status.c:1790
+#: wt-status.c:1831
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr ""
 
-#: wt-status.c:1903
+#: wt-status.c:1944
 msgid "No commits yet on "
 msgstr ""
 
-#: wt-status.c:1907
+#: wt-status.c:1948
 msgid "HEAD (no branch)"
 msgstr ""
 
-#: wt-status.c:1938
+#: wt-status.c:1979
 msgid "different"
 msgstr ""
 
-#: wt-status.c:1940 wt-status.c:1948
+#: wt-status.c:1981 wt-status.c:1989
 msgid "behind "
 msgstr ""
 
-#: wt-status.c:1943 wt-status.c:1946
+#: wt-status.c:1984 wt-status.c:1987
 msgid "ahead "
 msgstr ""
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2468
+#: wt-status.c:2509
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr ""
 
-#: wt-status.c:2474
+#: wt-status.c:2515
 msgid "additionally, your index contains uncommitted changes."
 msgstr ""
 
-#: wt-status.c:2476
+#: wt-status.c:2517
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr ""
@@ -8861,7 +8956,7 @@
 msgid "interactive picking"
 msgstr ""
 
-#: builtin/add.c:326 builtin/checkout.c:1535 builtin/reset.c:308
+#: builtin/add.c:326 builtin/checkout.c:1533 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr ""
 
@@ -8972,12 +9067,12 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr ""
 
-#: builtin/add.c:501 builtin/checkout.c:1703 builtin/commit.c:351
+#: builtin/add.c:501 builtin/checkout.c:1701 builtin/commit.c:351
 #: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1506
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr ""
 
-#: builtin/add.c:508 builtin/checkout.c:1715 builtin/commit.c:357
+#: builtin/add.c:508 builtin/checkout.c:1713 builtin/commit.c:357
 #: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1512
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr ""
@@ -9221,7 +9316,7 @@
 msgid "allow fall back on 3way merging if needed"
 msgstr ""
 
-#: builtin/am.c:2218 builtin/init-db.c:541 builtin/prune-packed.c:16
+#: builtin/am.c:2218 builtin/init-db.c:559 builtin/prune-packed.c:16
 #: builtin/repack.c:306 builtin/stash.c:816
 msgid "be quiet"
 msgstr ""
@@ -9276,7 +9371,7 @@
 
 #: builtin/am.c:2262 builtin/branch.c:659 builtin/for-each-ref.c:38
 #: builtin/replace.c:556 builtin/tag.c:438 builtin/verify-tag.c:38
-#: bugreport.c:131
+#: bugreport.c:137
 msgid "format"
 msgstr ""
 
@@ -9547,111 +9642,115 @@
 "Supported options are: --term-good|--term-old and --term-bad|--term-new."
 msgstr ""
 
-#: builtin/bisect--helper.c:478
+#: builtin/bisect--helper.c:460 builtin/bisect--helper.c:473
+msgid "'' is not a valid term"
+msgstr ""
+
+#: builtin/bisect--helper.c:483
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:482
+#: builtin/bisect--helper.c:487
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr ""
 
-#: builtin/bisect--helper.c:514
+#: builtin/bisect--helper.c:519
 msgid "bad HEAD - I need a HEAD"
 msgstr ""
 
-#: builtin/bisect--helper.c:529
+#: builtin/bisect--helper.c:534
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 
-#: builtin/bisect--helper.c:550
+#: builtin/bisect--helper.c:555
 msgid "won't bisect on cg-seek'ed tree"
 msgstr ""
 
-#: builtin/bisect--helper.c:553
+#: builtin/bisect--helper.c:558
 msgid "bad HEAD - strange symbolic ref"
 msgstr ""
 
-#: builtin/bisect--helper.c:577
+#: builtin/bisect--helper.c:582
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr ""
 
-#: builtin/bisect--helper.c:633
+#: builtin/bisect--helper.c:638
 msgid "perform 'git bisect next'"
 msgstr ""
 
-#: builtin/bisect--helper.c:635
+#: builtin/bisect--helper.c:640
 msgid "write the terms to .git/BISECT_TERMS"
 msgstr ""
 
-#: builtin/bisect--helper.c:637
+#: builtin/bisect--helper.c:642
 msgid "cleanup the bisection state"
 msgstr ""
 
-#: builtin/bisect--helper.c:639
+#: builtin/bisect--helper.c:644
 msgid "check for expected revs"
 msgstr ""
 
-#: builtin/bisect--helper.c:641
+#: builtin/bisect--helper.c:646
 msgid "reset the bisection state"
 msgstr ""
 
-#: builtin/bisect--helper.c:643
+#: builtin/bisect--helper.c:648
 msgid "write out the bisection state in BISECT_LOG"
 msgstr ""
 
-#: builtin/bisect--helper.c:645
+#: builtin/bisect--helper.c:650
 msgid "check and set terms in a bisection state"
 msgstr ""
 
-#: builtin/bisect--helper.c:647
+#: builtin/bisect--helper.c:652
 msgid "check whether bad or good terms exist"
 msgstr ""
 
-#: builtin/bisect--helper.c:649
+#: builtin/bisect--helper.c:654
 msgid "print out the bisect terms"
 msgstr ""
 
-#: builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:656
 msgid "start the bisect session"
 msgstr ""
 
-#: builtin/bisect--helper.c:653
+#: builtin/bisect--helper.c:658
 msgid "update BISECT_HEAD instead of checking out the current commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:655
+#: builtin/bisect--helper.c:660
 msgid "no log for BISECT_WRITE"
 msgstr ""
 
-#: builtin/bisect--helper.c:673
+#: builtin/bisect--helper.c:678
 msgid "--write-terms requires two arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:677
+#: builtin/bisect--helper.c:682
 msgid "--bisect-clean-state requires no arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:684
+#: builtin/bisect--helper.c:689
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr ""
 
-#: builtin/bisect--helper.c:688
+#: builtin/bisect--helper.c:693
 msgid "--bisect-write requires either 4 or 5 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:694
+#: builtin/bisect--helper.c:699
 msgid "--check-and-set-terms requires 3 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:700
+#: builtin/bisect--helper.c:705
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr ""
 
-#: builtin/bisect--helper.c:706
+#: builtin/bisect--helper.c:711
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr ""
 
@@ -10235,19 +10334,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr ""
 
-#: builtin/bundle.c:66 builtin/pack-objects.c:3376
+#: builtin/bundle.c:66 builtin/pack-objects.c:3448
 msgid "do not show progress meter"
 msgstr ""
 
-#: builtin/bundle.c:68 builtin/pack-objects.c:3378
+#: builtin/bundle.c:68 builtin/pack-objects.c:3450
 msgid "show progress meter"
 msgstr ""
 
-#: builtin/bundle.c:70 builtin/pack-objects.c:3380
+#: builtin/bundle.c:70 builtin/pack-objects.c:3452
 msgid "show progress meter during object writing phase"
 msgstr ""
 
-#: builtin/bundle.c:73 builtin/pack-objects.c:3383
+#: builtin/bundle.c:73 builtin/pack-objects.c:3455
 msgid "similar to --all-progress when progress meter is shown"
 msgstr ""
 
@@ -10285,8 +10384,8 @@
 
 #: builtin/cat-file.c:599
 msgid ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 msgstr ""
 
 #: builtin/cat-file.c:620
@@ -10321,7 +10420,7 @@
 msgid "for blob objects, run filters on object's content"
 msgstr ""
 
-#: builtin/cat-file.c:648 git-submodule.sh:984
+#: builtin/cat-file.c:648 git-submodule.sh:958
 msgid "blob"
 msgstr ""
 
@@ -10381,8 +10480,8 @@
 msgid "terminate input and output records by a NUL character"
 msgstr ""
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1488 builtin/gc.c:537
-#: builtin/worktree.c:502
+#: builtin/check-ignore.c:21 builtin/checkout.c:1486 builtin/gc.c:537
+#: builtin/worktree.c:561
 msgid "suppress progress reporting"
 msgstr ""
 
@@ -10474,7 +10573,7 @@
 #: builtin/checkout-index.c:178 builtin/column.c:31
 #: builtin/submodule--helper.c:1400 builtin/submodule--helper.c:1403
 #: builtin/submodule--helper.c:1411 builtin/submodule--helper.c:1909
-#: builtin/worktree.c:675
+#: builtin/worktree.c:754
 msgid "string"
 msgstr ""
 
@@ -10589,61 +10688,61 @@
 msgid "path '%s' is unmerged"
 msgstr ""
 
-#: builtin/checkout.c:704
+#: builtin/checkout.c:702
 msgid "you need to resolve your current index first"
 msgstr ""
 
-#: builtin/checkout.c:758
+#: builtin/checkout.c:756
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
 "%s"
 msgstr ""
 
-#: builtin/checkout.c:861
+#: builtin/checkout.c:859
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr ""
 
-#: builtin/checkout.c:903
+#: builtin/checkout.c:901
 msgid "HEAD is now at"
 msgstr ""
 
-#: builtin/checkout.c:907 builtin/clone.c:720
+#: builtin/checkout.c:905 builtin/clone.c:720
 msgid "unable to update HEAD"
 msgstr ""
 
-#: builtin/checkout.c:911
+#: builtin/checkout.c:909
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:914
+#: builtin/checkout.c:912
 #, c-format
 msgid "Already on '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:918
+#: builtin/checkout.c:916
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:920 builtin/checkout.c:1344
+#: builtin/checkout.c:918 builtin/checkout.c:1342
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:922
+#: builtin/checkout.c:920
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:973
+#: builtin/checkout.c:971
 #, c-format
 msgid " ... and %d more.\n"
 msgstr ""
 
-#: builtin/checkout.c:979
+#: builtin/checkout.c:977
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -10658,7 +10757,7 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:996
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -10675,26 +10774,26 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/checkout.c:1033
+#: builtin/checkout.c:1031
 msgid "internal error in revision walk"
 msgstr ""
 
-#: builtin/checkout.c:1037
+#: builtin/checkout.c:1035
 msgid "Previous HEAD position was"
 msgstr ""
 
-#: builtin/checkout.c:1077 builtin/checkout.c:1339
+#: builtin/checkout.c:1075 builtin/checkout.c:1337
 msgid "You are on a branch yet to be born"
 msgstr ""
 
-#: builtin/checkout.c:1152
+#: builtin/checkout.c:1150
 #, 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:1159
+#: builtin/checkout.c:1157
 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"
@@ -10706,286 +10805,287 @@
 "checkout.defaultRemote=origin in your config."
 msgstr ""
 
-#: builtin/checkout.c:1169
+#: builtin/checkout.c:1167
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr ""
 
-#: builtin/checkout.c:1235
+#: builtin/checkout.c:1233
 msgid "only one reference expected"
 msgstr ""
 
-#: builtin/checkout.c:1252
+#: builtin/checkout.c:1250
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr ""
 
-#: builtin/checkout.c:1298 builtin/worktree.c:283 builtin/worktree.c:451
+#: builtin/checkout.c:1296 builtin/worktree.c:342 builtin/worktree.c:510
 #, c-format
 msgid "invalid reference: %s"
 msgstr ""
 
-#: builtin/checkout.c:1311 builtin/checkout.c:1677
+#: builtin/checkout.c:1309 builtin/checkout.c:1675
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr ""
 
-#: builtin/checkout.c:1358
+#: builtin/checkout.c:1356
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1360
+#: builtin/checkout.c:1358
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1361 builtin/checkout.c:1369
+#: builtin/checkout.c:1359 builtin/checkout.c:1367
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1364
+#: builtin/checkout.c:1362
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1380
+#: builtin/checkout.c:1378
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1384
+#: builtin/checkout.c:1382
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1388
+#: builtin/checkout.c:1386
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1390
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1394
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
 msgstr ""
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1398
 msgid "you are switching branch while bisecting"
 msgstr ""
 
-#: builtin/checkout.c:1407
+#: builtin/checkout.c:1405
 msgid "paths cannot be used with switching branches"
 msgstr ""
 
-#: builtin/checkout.c:1410 builtin/checkout.c:1414 builtin/checkout.c:1418
+#: builtin/checkout.c:1408 builtin/checkout.c:1412 builtin/checkout.c:1416
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr ""
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1425 builtin/checkout.c:1428
-#: builtin/checkout.c:1433 builtin/checkout.c:1438
+#: builtin/checkout.c:1420 builtin/checkout.c:1423 builtin/checkout.c:1426
+#: builtin/checkout.c:1431 builtin/checkout.c:1436
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1435
+#: builtin/checkout.c:1433
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr ""
 
-#: builtin/checkout.c:1443
+#: builtin/checkout.c:1441
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1450
+#: builtin/checkout.c:1448
 msgid "missing branch or commit argument"
 msgstr ""
 
-#: builtin/checkout.c:1492 builtin/clone.c:91 builtin/commit-graph.c:80
-#: builtin/commit-graph.c:164 builtin/fetch.c:168 builtin/merge.c:288
+#: builtin/checkout.c:1490 builtin/clone.c:91 builtin/commit-graph.c:82
+#: builtin/commit-graph.c:189 builtin/fetch.c:168 builtin/merge.c:288
 #: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:561
 #: builtin/send-pack.c:173
 msgid "force progress reporting"
 msgstr ""
 
-#: builtin/checkout.c:1493
+#: builtin/checkout.c:1491
 msgid "perform a 3-way merge with the new branch"
 msgstr ""
 
-#: builtin/checkout.c:1494 builtin/log.c:1709 parse-options.h:322
+#: builtin/checkout.c:1492 builtin/log.c:1709 parse-options.h:322
 msgid "style"
 msgstr ""
 
-#: builtin/checkout.c:1495
+#: builtin/checkout.c:1493
 msgid "conflict style (merge or diff3)"
 msgstr ""
 
-#: builtin/checkout.c:1507 builtin/worktree.c:499
+#: builtin/checkout.c:1505 builtin/worktree.c:558
 msgid "detach HEAD at named commit"
 msgstr ""
 
-#: builtin/checkout.c:1508
+#: builtin/checkout.c:1506
 msgid "set upstream info for new branch"
 msgstr ""
 
-#: builtin/checkout.c:1510
+#: builtin/checkout.c:1508
 msgid "force checkout (throw away local modifications)"
 msgstr ""
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new-branch"
 msgstr ""
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new unparented branch"
 msgstr ""
 
-#: builtin/checkout.c:1514 builtin/merge.c:292
+#: builtin/checkout.c:1512 builtin/merge.c:292
 msgid "update ignored files (default)"
 msgstr ""
 
-#: builtin/checkout.c:1517
+#: builtin/checkout.c:1515
 msgid "do not check if another worktree is holding the given ref"
 msgstr ""
 
-#: builtin/checkout.c:1530
+#: builtin/checkout.c:1528
 msgid "checkout our version for unmerged files"
 msgstr ""
 
-#: builtin/checkout.c:1533
+#: builtin/checkout.c:1531
 msgid "checkout their version for unmerged files"
 msgstr ""
 
-#: builtin/checkout.c:1537
+#: builtin/checkout.c:1535
 msgid "do not limit pathspecs to sparse entries only"
 msgstr ""
 
-#: builtin/checkout.c:1592
+#: builtin/checkout.c:1590
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr ""
 
-#: builtin/checkout.c:1596
+#: builtin/checkout.c:1594
 msgid "-p and --overlay are mutually exclusive"
 msgstr ""
 
-#: builtin/checkout.c:1633
+#: builtin/checkout.c:1631
 msgid "--track needs a branch name"
 msgstr ""
 
-#: builtin/checkout.c:1638
+#: builtin/checkout.c:1636
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr ""
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "could not resolve %s"
 msgstr ""
 
-#: builtin/checkout.c:1686
+#: builtin/checkout.c:1684
 msgid "invalid path specification"
 msgstr ""
 
-#: builtin/checkout.c:1693
+#: builtin/checkout.c:1691
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr ""
 
-#: builtin/checkout.c:1697
+#: builtin/checkout.c:1695
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1706
+#: builtin/checkout.c:1704
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr ""
 
-#: builtin/checkout.c:1709 builtin/reset.c:325 builtin/stash.c:1503
+#: builtin/checkout.c:1707 builtin/reset.c:325 builtin/stash.c:1503
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr ""
 
-#: builtin/checkout.c:1720
+#: builtin/checkout.c:1718
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
 msgstr ""
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 msgid "you must specify path(s) to restore"
 msgstr ""
 
-#: builtin/checkout.c:1751 builtin/checkout.c:1753 builtin/checkout.c:1802
-#: builtin/checkout.c:1804 builtin/clone.c:121 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/worktree.c:495 builtin/worktree.c:497
+#: builtin/checkout.c:1749 builtin/checkout.c:1751 builtin/checkout.c:1800
+#: builtin/checkout.c:1802 builtin/clone.c:121 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2295 builtin/worktree.c:554
+#: builtin/worktree.c:556
 msgid "branch"
 msgstr ""
 
-#: builtin/checkout.c:1752
+#: builtin/checkout.c:1750
 msgid "create and checkout a new branch"
 msgstr ""
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid "create/reset and checkout a branch"
 msgstr ""
 
-#: builtin/checkout.c:1755
+#: builtin/checkout.c:1753
 msgid "create reflog for new branch"
 msgstr ""
 
-#: builtin/checkout.c:1757
+#: builtin/checkout.c:1755
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr ""
 
-#: builtin/checkout.c:1758
+#: builtin/checkout.c:1756
 msgid "use overlay mode (default)"
 msgstr ""
 
-#: builtin/checkout.c:1803
+#: builtin/checkout.c:1801
 msgid "create and switch to a new branch"
 msgstr ""
 
-#: builtin/checkout.c:1805
+#: builtin/checkout.c:1803
 msgid "create/reset and switch to a branch"
 msgstr ""
 
-#: builtin/checkout.c:1807
+#: builtin/checkout.c:1805
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr ""
 
-#: builtin/checkout.c:1809
+#: builtin/checkout.c:1807
 msgid "throw away local modifications"
 msgstr ""
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "which tree-ish to checkout from"
 msgstr ""
 
-#: builtin/checkout.c:1845
+#: builtin/checkout.c:1843
 msgid "restore the index"
 msgstr ""
 
-#: builtin/checkout.c:1847
+#: builtin/checkout.c:1845
 msgid "restore the working tree (default)"
 msgstr ""
 
-#: builtin/checkout.c:1849
+#: builtin/checkout.c:1847
 msgid "ignore unmerged entries"
 msgstr ""
 
-#: builtin/checkout.c:1850
+#: builtin/checkout.c:1848
 msgid "use overlay mode"
 msgstr ""
 
@@ -11128,22 +11228,22 @@
 msgid "remove only ignored files"
 msgstr ""
 
-#: builtin/clean.c:931
-msgid "-x and -X cannot be used together"
-msgstr ""
-
-#: builtin/clean.c:935
+#: builtin/clean.c:929
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
 msgstr ""
 
-#: builtin/clean.c:938
+#: builtin/clean.c:932
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
 msgstr ""
 
+#: builtin/clean.c:944
+msgid "-x and -X cannot be used together"
+msgstr ""
+
 #: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr ""
@@ -11152,7 +11252,7 @@
 msgid "don't create a checkout"
 msgstr ""
 
-#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:536
+#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:554
 msgid "create a bare repository"
 msgstr ""
 
@@ -11184,11 +11284,11 @@
 msgid "number of submodules cloned in parallel"
 msgstr ""
 
-#: builtin/clone.c:111 builtin/init-db.c:533
+#: builtin/clone.c:111 builtin/init-db.c:551
 msgid "template-directory"
 msgstr ""
 
-#: builtin/clone.c:112 builtin/init-db.c:534
+#: builtin/clone.c:112 builtin/init-db.c:552
 msgid "directory from which templates will be used"
 msgstr ""
 
@@ -11202,8 +11302,8 @@
 msgid "use --reference only while cloning"
 msgstr ""
 
-#: builtin/clone.c:119 builtin/column.c:27 builtin/merge-file.c:46
-#: builtin/pack-objects.c:3442 builtin/repack.c:329
+#: builtin/clone.c:119 builtin/column.c:27 builtin/init-db.c:562
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3514 builtin/repack.c:329
 msgid "name"
 msgstr ""
 
@@ -11228,7 +11328,7 @@
 msgid "create a shallow clone of that depth"
 msgstr ""
 
-#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3431
+#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3503
 #: builtin/pull.c:211
 msgid "time"
 msgstr ""
@@ -11259,11 +11359,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr ""
 
-#: builtin/clone.c:137 builtin/init-db.c:542
+#: builtin/clone.c:137 builtin/init-db.c:560
 msgid "gitdir"
 msgstr ""
 
-#: builtin/clone.c:138 builtin/init-db.c:543
+#: builtin/clone.c:138 builtin/init-db.c:561
 msgid "separate git dir from working tree"
 msgstr ""
 
@@ -11385,7 +11485,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr ""
 
-#: builtin/clone.c:971 builtin/receive-pack.c:1972
+#: builtin/clone.c:971 builtin/receive-pack.c:1982
 msgid "Too many arguments."
 msgstr ""
 
@@ -11402,83 +11502,83 @@
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr ""
 
-#: builtin/clone.c:1004
+#: builtin/clone.c:1007
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr ""
 
-#: builtin/clone.c:1010 builtin/fetch.c:1789
+#: builtin/clone.c:1011 builtin/fetch.c:1794
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr ""
 
-#: builtin/clone.c:1020
+#: builtin/clone.c:1021
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr ""
 
-#: builtin/clone.c:1030
+#: builtin/clone.c:1033
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr ""
 
-#: builtin/clone.c:1045 builtin/clone.c:1066 builtin/difftool.c:271
-#: builtin/log.c:1886 builtin/worktree.c:295 builtin/worktree.c:327
+#: builtin/clone.c:1048 builtin/clone.c:1069 builtin/difftool.c:271
+#: builtin/log.c:1886 builtin/worktree.c:354 builtin/worktree.c:386
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr ""
 
-#: builtin/clone.c:1050
+#: builtin/clone.c:1053
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr ""
 
-#: builtin/clone.c:1070
+#: builtin/clone.c:1073
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr ""
 
-#: builtin/clone.c:1072
+#: builtin/clone.c:1075
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr ""
 
-#: builtin/clone.c:1096
+#: builtin/clone.c:1099
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
 msgstr ""
 
-#: builtin/clone.c:1160
+#: builtin/clone.c:1164
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr ""
 
-#: builtin/clone.c:1162
+#: builtin/clone.c:1166
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr ""
 
-#: builtin/clone.c:1164
+#: builtin/clone.c:1168
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 
-#: builtin/clone.c:1166
+#: builtin/clone.c:1170
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr ""
 
-#: builtin/clone.c:1169
+#: builtin/clone.c:1173
 msgid "source repository is shallow, ignoring --local"
 msgstr ""
 
-#: builtin/clone.c:1174
+#: builtin/clone.c:1178
 msgid "--local is ignored"
 msgstr ""
 
-#: builtin/clone.c:1249 builtin/clone.c:1257
+#: builtin/clone.c:1262 builtin/clone.c:1270
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr ""
 
-#: builtin/clone.c:1260
+#: builtin/clone.c:1273
 msgid "You appear to have cloned an empty repository."
 msgstr ""
 
@@ -11514,90 +11614,99 @@
 msgid "--command must be the first argument"
 msgstr ""
 
-#: builtin/commit-graph.c:11 builtin/commit-graph.c:19
+#: builtin/commit-graph.c:13 builtin/commit-graph.c:21
 msgid ""
 "git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
 msgstr ""
 
-#: builtin/commit-graph.c:12 builtin/commit-graph.c:24
+#: builtin/commit-graph.c:14 builtin/commit-graph.c:26
 msgid ""
 "git commit-graph write [--object-dir <objdir>] [--append] [--"
 "split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
 "paths] [--[no-]progress] <split options>"
 msgstr ""
 
-#: builtin/commit-graph.c:60
+#: builtin/commit-graph.c:62
 #, c-format
 msgid "could not find object directory matching %s"
 msgstr ""
 
-#: builtin/commit-graph.c:76 builtin/commit-graph.c:152
-#: builtin/commit-graph.c:257 builtin/fetch.c:180 builtin/log.c:1678
+#: builtin/commit-graph.c:78 builtin/commit-graph.c:177
+#: builtin/commit-graph.c:276 builtin/fetch.c:180 builtin/log.c:1678
 msgid "dir"
 msgstr ""
 
-#: builtin/commit-graph.c:77 builtin/commit-graph.c:153
-#: builtin/commit-graph.c:258
+#: builtin/commit-graph.c:79 builtin/commit-graph.c:178
+#: builtin/commit-graph.c:277
 msgid "The object directory to store the graph"
 msgstr ""
 
-#: builtin/commit-graph.c:79
+#: builtin/commit-graph.c:81
 msgid "if the commit-graph is split, only verify the tip file"
 msgstr ""
 
-#: builtin/commit-graph.c:102
+#: builtin/commit-graph.c:104
 #, c-format
 msgid "Could not open commit-graph '%s'"
 msgstr ""
 
-#: builtin/commit-graph.c:136
+#: builtin/commit-graph.c:138
 #, c-format
 msgid "unrecognized --split argument, %s"
 msgstr ""
 
-#: builtin/commit-graph.c:155
+#: builtin/commit-graph.c:151
+#, c-format
+msgid "unexpected non-hex object ID: %s"
+msgstr ""
+
+#: builtin/commit-graph.c:156
+#, c-format
+msgid "invalid object: %s"
+msgstr ""
+
+#: builtin/commit-graph.c:180
 msgid "start walk at all refs"
 msgstr ""
 
-#: builtin/commit-graph.c:157
+#: builtin/commit-graph.c:182
 msgid "scan pack-indexes listed by stdin for commits"
 msgstr ""
 
-#: builtin/commit-graph.c:159
+#: builtin/commit-graph.c:184
 msgid "start walk at commits listed by stdin"
 msgstr ""
 
-#: builtin/commit-graph.c:161
+#: builtin/commit-graph.c:186
 msgid "include all commits already in the commit-graph file"
 msgstr ""
 
-#: builtin/commit-graph.c:163
+#: builtin/commit-graph.c:188
 msgid "enable computation for changed paths"
 msgstr ""
 
-#: builtin/commit-graph.c:166
+#: builtin/commit-graph.c:191
 msgid "allow writing an incremental commit-graph file"
 msgstr ""
 
-#: builtin/commit-graph.c:170
+#: builtin/commit-graph.c:195
 msgid "maximum number of commits in a non-base split commit-graph"
 msgstr ""
 
-#: builtin/commit-graph.c:172
+#: builtin/commit-graph.c:197
 msgid "maximum ratio between two levels of a split commit-graph"
 msgstr ""
 
-#: builtin/commit-graph.c:174
+#: builtin/commit-graph.c:199
 msgid "only expire files older than a given date-time"
 msgstr ""
 
-#: builtin/commit-graph.c:190
+#: builtin/commit-graph.c:215
 msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
 msgstr ""
 
-#: builtin/commit-graph.c:229
-#, c-format
-msgid "unexpected non-hex object ID: %s"
+#: builtin/commit-graph.c:245
+msgid "Collecting commits from input"
 msgstr ""
 
 #: builtin/commit-tree.c:18
@@ -11962,7 +12071,7 @@
 msgstr ""
 
 #: builtin/commit.c:1376 builtin/commit.c:1535 builtin/push.c:549
-#: builtin/worktree.c:646
+#: builtin/worktree.c:722
 msgid "machine-readable output"
 msgstr ""
 
@@ -11975,8 +12084,8 @@
 msgstr ""
 
 #: builtin/commit.c:1384 builtin/commit.c:1388 builtin/commit.c:1543
-#: builtin/fast-export.c:1153 builtin/fast-export.c:1156
-#: builtin/fast-export.c:1159 builtin/rebase.c:1392 parse-options.h:336
+#: builtin/fast-export.c:1199 builtin/fast-export.c:1202
+#: builtin/fast-export.c:1205 builtin/rebase.c:1392 parse-options.h:336
 msgid "mode"
 msgstr ""
 
@@ -12630,35 +12739,45 @@
 msgid "--broken is incompatible with commit-ishes"
 msgstr ""
 
-#: builtin/diff.c:84
+#: builtin/diff.c:91
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr ""
 
-#: builtin/diff.c:235
+#: builtin/diff.c:242
 #, c-format
 msgid "invalid option: %s"
 msgstr ""
 
-#: builtin/diff.c:350
+#: builtin/diff.c:359
+#, c-format
+msgid "%s...%s: no merge base"
+msgstr ""
+
+#: builtin/diff.c:469
 msgid "Not a git repository"
 msgstr ""
 
-#: builtin/diff.c:394
+#: builtin/diff.c:514
 #, c-format
 msgid "invalid object '%s' given."
 msgstr ""
 
-#: builtin/diff.c:403
+#: builtin/diff.c:525
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr ""
 
-#: builtin/diff.c:408
+#: builtin/diff.c:530
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr ""
 
+#: builtin/diff.c:564
+#, c-format
+msgid "%s...%s: multiple merge bases, using %s"
+msgstr ""
+
 #: builtin/difftool.c:30
 msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
 msgstr ""
@@ -12801,82 +12920,103 @@
 msgid "git fast-export [rev-list-opts]"
 msgstr ""
 
-#: builtin/fast-export.c:853
+#: builtin/fast-export.c:868
 msgid "Error: Cannot export nested tags unless --mark-tags is specified."
 msgstr ""
 
-#: builtin/fast-export.c:1152
+#: builtin/fast-export.c:1178
+msgid "--anonymize-map token cannot be empty"
+msgstr ""
+
+#: builtin/fast-export.c:1198
 msgid "show progress after <n> objects"
 msgstr ""
 
-#: builtin/fast-export.c:1154
+#: builtin/fast-export.c:1200
 msgid "select handling of signed tags"
 msgstr ""
 
-#: builtin/fast-export.c:1157
+#: builtin/fast-export.c:1203
 msgid "select handling of tags that tag filtered objects"
 msgstr ""
 
-#: builtin/fast-export.c:1160
+#: builtin/fast-export.c:1206
 msgid "select handling of commit messages in an alternate encoding"
 msgstr ""
 
-#: builtin/fast-export.c:1163
+#: builtin/fast-export.c:1209
 msgid "Dump marks to this file"
 msgstr ""
 
-#: builtin/fast-export.c:1165
+#: builtin/fast-export.c:1211
 msgid "Import marks from this file"
 msgstr ""
 
-#: builtin/fast-export.c:1169
+#: builtin/fast-export.c:1215
 msgid "Import marks from this file if it exists"
 msgstr ""
 
-#: builtin/fast-export.c:1171
+#: builtin/fast-export.c:1217
 msgid "Fake a tagger when tags lack one"
 msgstr ""
 
-#: builtin/fast-export.c:1173
+#: builtin/fast-export.c:1219
 msgid "Output full tree for each commit"
 msgstr ""
 
-#: builtin/fast-export.c:1175
+#: builtin/fast-export.c:1221
 msgid "Use the done feature to terminate the stream"
 msgstr ""
 
-#: builtin/fast-export.c:1176
+#: builtin/fast-export.c:1222
 msgid "Skip output of blob data"
 msgstr ""
 
-#: builtin/fast-export.c:1177 builtin/log.c:1724
+#: builtin/fast-export.c:1223 builtin/log.c:1724
 msgid "refspec"
 msgstr ""
 
-#: builtin/fast-export.c:1178
+#: builtin/fast-export.c:1224
 msgid "Apply refspec to exported refs"
 msgstr ""
 
-#: builtin/fast-export.c:1179
+#: builtin/fast-export.c:1225
 msgid "anonymize output"
 msgstr ""
 
-#: builtin/fast-export.c:1181
+#: builtin/fast-export.c:1226
+msgid "from:to"
+msgstr ""
+
+#: builtin/fast-export.c:1227
+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"
 msgstr ""
 
-#: builtin/fast-export.c:1183
+#: builtin/fast-export.c:1232
 msgid "Show original object ids of blobs/commits"
 msgstr ""
 
-#: builtin/fast-export.c:1185
+#: builtin/fast-export.c:1234
 msgid "Label tags with mark ids"
 msgstr ""
 
-#: builtin/fast-export.c:1220
+#: builtin/fast-export.c:1257
+msgid "--anonymize-map without --anonymize does not make sense"
+msgstr ""
+
+#: builtin/fast-export.c:1272
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
 msgstr ""
 
+#: builtin/fetch-pack.c:245
+#, c-format
+msgid "Lockfile created but not reported: %s"
+msgstr ""
+
 #: builtin/fetch.c:35
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr ""
@@ -13185,40 +13325,40 @@
 msgid "You need to specify a tag name."
 msgstr ""
 
-#: builtin/fetch.c:1773
+#: builtin/fetch.c:1778
 msgid "Negative depth in --deepen is not supported"
 msgstr ""
 
-#: builtin/fetch.c:1775
+#: builtin/fetch.c:1780
 msgid "--deepen and --depth are mutually exclusive"
 msgstr ""
 
-#: builtin/fetch.c:1780
+#: builtin/fetch.c:1785
 msgid "--depth and --unshallow cannot be used together"
 msgstr ""
 
-#: builtin/fetch.c:1782
+#: builtin/fetch.c:1787
 msgid "--unshallow on a complete repository does not make sense"
 msgstr ""
 
-#: builtin/fetch.c:1798
+#: builtin/fetch.c:1800
 msgid "fetch --all does not take a repository argument"
 msgstr ""
 
-#: builtin/fetch.c:1800
+#: builtin/fetch.c:1802
 msgid "fetch --all does not make sense with refspecs"
 msgstr ""
 
-#: builtin/fetch.c:1809
+#: builtin/fetch.c:1811
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr ""
 
-#: builtin/fetch.c:1816
+#: builtin/fetch.c:1818
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr ""
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1836
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -13658,8 +13798,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1730
-#: builtin/pack-objects.c:2855
+#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1727
+#: builtin/pack-objects.c:2904
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr ""
@@ -13888,11 +14028,11 @@
 msgid "invalid option combination, ignoring --threads"
 msgstr ""
 
-#: builtin/grep.c:1084 builtin/pack-objects.c:3548
+#: builtin/grep.c:1084 builtin/pack-objects.c:3623
 msgid "no threads support, ignoring --threads"
 msgstr ""
 
-#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2852
+#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2901
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr ""
@@ -14087,7 +14227,7 @@
 msgid "used more bytes than were available"
 msgstr ""
 
-#: builtin/index-pack.c:288 builtin/pack-objects.c:607
+#: builtin/index-pack.c:288 builtin/pack-objects.c:618
 msgid "pack too large for current definition of off_t"
 msgstr ""
 
@@ -14158,8 +14298,8 @@
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr ""
 
-#: builtin/index-pack.c:738 builtin/pack-objects.c:159
-#: builtin/pack-objects.c:219 builtin/pack-objects.c:314
+#: builtin/index-pack.c:738 builtin/pack-objects.c:170
+#: builtin/pack-objects.c:230 builtin/pack-objects.c:325
 #, c-format
 msgid "unable to read %s"
 msgstr ""
@@ -14220,7 +14360,7 @@
 msgid "Resolving deltas"
 msgstr ""
 
-#: builtin/index-pack.c:1208 builtin/pack-objects.c:2616
+#: builtin/index-pack.c:1208 builtin/pack-objects.c:2665
 #, c-format
 msgid "unable to create thread: %s"
 msgstr ""
@@ -14285,58 +14425,67 @@
 msgid "cannot store index file"
 msgstr ""
 
-#: builtin/index-pack.c:1528 builtin/pack-objects.c:2863
+#: builtin/index-pack.c:1528 builtin/pack-objects.c:2912
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr ""
 
-#: builtin/index-pack.c:1596
+#: builtin/index-pack.c:1592
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1598
+#: builtin/index-pack.c:1594
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1646
+#: builtin/index-pack.c:1642
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1692
+#: builtin/index-pack.c:1689
 msgid "Cannot come back to cwd"
 msgstr ""
 
-#: builtin/index-pack.c:1741 builtin/index-pack.c:1744
-#: builtin/index-pack.c:1760 builtin/index-pack.c:1764
+#: builtin/index-pack.c:1738 builtin/index-pack.c:1741
+#: builtin/index-pack.c:1757 builtin/index-pack.c:1761
 #, c-format
 msgid "bad %s"
 msgstr ""
 
-#: builtin/index-pack.c:1780
-msgid "--fix-thin cannot be used without --stdin"
+#: builtin/index-pack.c:1767 builtin/init-db.c:392 builtin/init-db.c:621
+#, c-format
+msgid "unknown hash algorithm '%s'"
 msgstr ""
 
 #: builtin/index-pack.c:1782
+msgid "--fix-thin cannot be used without --stdin"
+msgstr ""
+
+#: builtin/index-pack.c:1784
 msgid "--stdin requires a git repository"
 msgstr ""
 
-#: builtin/index-pack.c:1788
+#: builtin/index-pack.c:1786
+msgid "--object-format cannot be used with --stdin"
+msgstr ""
+
+#: builtin/index-pack.c:1792
 msgid "--verify with no packfile name given"
 msgstr ""
 
-#: builtin/index-pack.c:1836 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1840 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr ""
 
@@ -14380,90 +14529,99 @@
 msgid "not copying templates from '%s': %s"
 msgstr ""
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:276
+#, c-format
+msgid "invalid initial branch name: '%s'"
+msgstr ""
+
+#: builtin/init-db.c:368
 #, c-format
 msgid "unable to handle file type %d"
 msgstr ""
 
-#: builtin/init-db.c:359
+#: builtin/init-db.c:371
 #, c-format
 msgid "unable to move %s to %s"
 msgstr ""
 
-#: builtin/init-db.c:374
+#: builtin/init-db.c:386
 msgid "attempt to reinitialize repository with different hash"
 msgstr ""
 
-#: builtin/init-db.c:380 builtin/init-db.c:601
-#, c-format
-msgid "unknown hash algorithm '%s'"
-msgstr ""
-
-#: builtin/init-db.c:397 builtin/init-db.c:400
+#: builtin/init-db.c:410 builtin/init-db.c:413
 #, c-format
 msgid "%s already exists"
 msgstr ""
 
-#: builtin/init-db.c:458
+#: builtin/init-db.c:444
+#, c-format
+msgid "re-init: ignored --initial-branch=%s"
+msgstr ""
+
+#: builtin/init-db.c:475
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr ""
 
-#: builtin/init-db.c:459
+#: builtin/init-db.c:476
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr ""
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:480
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr ""
 
-#: builtin/init-db.c:464
+#: builtin/init-db.c:481
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr ""
 
-#: builtin/init-db.c:513
+#: builtin/init-db.c:530
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
 msgstr ""
 
-#: builtin/init-db.c:538
+#: builtin/init-db.c:556
 msgid "permissions"
 msgstr ""
 
-#: builtin/init-db.c:539
+#: builtin/init-db.c:557
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr ""
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:563
+msgid "override the name of the initial branch"
+msgstr ""
+
+#: builtin/init-db.c:564
 msgid "hash"
 msgstr ""
 
-#: builtin/init-db.c:545
+#: builtin/init-db.c:565 builtin/show-index.c:22
 msgid "specify the hash algorithm to use"
 msgstr ""
 
-#: builtin/init-db.c:578 builtin/init-db.c:583
+#: builtin/init-db.c:598 builtin/init-db.c:603
 #, c-format
 msgid "cannot mkdir %s"
 msgstr ""
 
-#: builtin/init-db.c:587
+#: builtin/init-db.c:607
 #, c-format
 msgid "cannot chdir to %s"
 msgstr ""
 
-#: builtin/init-db.c:614
+#: builtin/init-db.c:634
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
 "dir=<directory>)"
 msgstr ""
 
-#: builtin/init-db.c:642
+#: builtin/init-db.c:662
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr ""
@@ -16154,7 +16312,7 @@
 msgid "read object names from the standard input"
 msgstr ""
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:164
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
 msgid "do not remove, show only"
 msgstr ""
 
@@ -16185,334 +16343,355 @@
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 
-#: builtin/pack-objects.c:431
+#: builtin/pack-objects.c:442
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:442
+#: builtin/pack-objects.c:453
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:573
+#: builtin/pack-objects.c:584
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr ""
 
-#: builtin/pack-objects.c:784
+#: builtin/pack-objects.c:795
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr ""
 
-#: builtin/pack-objects.c:973
+#: builtin/pack-objects.c:1003
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 
-#: builtin/pack-objects.c:986
+#: builtin/pack-objects.c:1016
 msgid "Writing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:1047 builtin/update-index.c:90
+#: builtin/pack-objects.c:1077 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr ""
 
-#: builtin/pack-objects.c:1100
+#: builtin/pack-objects.c:1130
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr ""
 
-#: builtin/pack-objects.c:1298
+#: builtin/pack-objects.c:1347
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
 
-#: builtin/pack-objects.c:1725
+#: builtin/pack-objects.c:1774
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:1734
+#: builtin/pack-objects.c:1783
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2005
+#: builtin/pack-objects.c:2054
 msgid "Counting objects"
 msgstr ""
 
-#: builtin/pack-objects.c:2150
+#: builtin/pack-objects.c:2199
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2220 builtin/pack-objects.c:2236
-#: builtin/pack-objects.c:2246
+#: builtin/pack-objects.c:2269 builtin/pack-objects.c:2285
+#: builtin/pack-objects.c:2295
 #, c-format
 msgid "object %s cannot be read"
 msgstr ""
 
-#: builtin/pack-objects.c:2223 builtin/pack-objects.c:2250
+#: builtin/pack-objects.c:2272 builtin/pack-objects.c:2299
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr ""
 
-#: builtin/pack-objects.c:2260
+#: builtin/pack-objects.c:2309
 msgid "suboptimal pack - out of memory"
 msgstr ""
 
-#: builtin/pack-objects.c:2575
+#: builtin/pack-objects.c:2624
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr ""
 
-#: builtin/pack-objects.c:2714
+#: builtin/pack-objects.c:2763
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2802
+#: builtin/pack-objects.c:2851
 msgid "Compressing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:2808
+#: builtin/pack-objects.c:2857
 msgid "inconsistency with delta count"
 msgstr ""
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2929
+#, c-format
+msgid ""
+"value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
+"hash> <uri>' (got '%s')"
+msgstr ""
+
+#: builtin/pack-objects.c:2932
+#, c-format
+msgid ""
+"object already configured in another uploadpack.blobpackfileuri (got '%s')"
+msgstr ""
+
+#: builtin/pack-objects.c:2961
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
 " %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2895
+#: builtin/pack-objects.c:2967
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
 " %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3065
 msgid "invalid value for --missing"
 msgstr ""
 
-#: builtin/pack-objects.c:3052 builtin/pack-objects.c:3160
+#: builtin/pack-objects.c:3124 builtin/pack-objects.c:3232
 msgid "cannot open pack index"
 msgstr ""
 
-#: builtin/pack-objects.c:3083
+#: builtin/pack-objects.c:3155
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr ""
 
-#: builtin/pack-objects.c:3168
+#: builtin/pack-objects.c:3240
 msgid "unable to force loose object"
 msgstr ""
 
-#: builtin/pack-objects.c:3261
+#: builtin/pack-objects.c:3333
 #, c-format
 msgid "not a rev '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3336
 #, c-format
 msgid "bad revision '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3289
+#: builtin/pack-objects.c:3361
 msgid "unable to add recent objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3342
+#: builtin/pack-objects.c:3414
 #, c-format
 msgid "unsupported index version %s"
 msgstr ""
 
-#: builtin/pack-objects.c:3346
+#: builtin/pack-objects.c:3418
 #, c-format
 msgid "bad index version '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:3384
+#: builtin/pack-objects.c:3456
 msgid "<version>[,<offset>]"
 msgstr ""
 
-#: builtin/pack-objects.c:3385
+#: builtin/pack-objects.c:3457
 msgid "write the pack index file in the specified idx format version"
 msgstr ""
 
-#: builtin/pack-objects.c:3388
+#: builtin/pack-objects.c:3460
 msgid "maximum size of each output pack file"
 msgstr ""
 
-#: builtin/pack-objects.c:3390
+#: builtin/pack-objects.c:3462
 msgid "ignore borrowed objects from alternate object store"
 msgstr ""
 
-#: builtin/pack-objects.c:3392
+#: builtin/pack-objects.c:3464
 msgid "ignore packed objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3394
+#: builtin/pack-objects.c:3466
 msgid "limit pack window by objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3396
+#: builtin/pack-objects.c:3468
 msgid "limit pack window by memory in addition to object limit"
 msgstr ""
 
-#: builtin/pack-objects.c:3398
+#: builtin/pack-objects.c:3470
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr ""
 
-#: builtin/pack-objects.c:3400
+#: builtin/pack-objects.c:3472
 msgid "reuse existing deltas"
 msgstr ""
 
-#: builtin/pack-objects.c:3402
+#: builtin/pack-objects.c:3474
 msgid "reuse existing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3404
+#: builtin/pack-objects.c:3476
 msgid "use OFS_DELTA objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3406
+#: builtin/pack-objects.c:3478
 msgid "use threads when searching for best delta matches"
 msgstr ""
 
-#: builtin/pack-objects.c:3408
+#: builtin/pack-objects.c:3480
 msgid "do not create an empty pack output"
 msgstr ""
 
-#: builtin/pack-objects.c:3410
+#: builtin/pack-objects.c:3482
 msgid "read revision arguments from standard input"
 msgstr ""
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3484
 msgid "limit the objects to those that are not yet packed"
 msgstr ""
 
-#: builtin/pack-objects.c:3415
+#: builtin/pack-objects.c:3487
 msgid "include objects reachable from any reference"
 msgstr ""
 
-#: builtin/pack-objects.c:3418
+#: builtin/pack-objects.c:3490
 msgid "include objects referred by reflog entries"
 msgstr ""
 
-#: builtin/pack-objects.c:3421
+#: builtin/pack-objects.c:3493
 msgid "include objects referred to by the index"
 msgstr ""
 
-#: builtin/pack-objects.c:3424
+#: builtin/pack-objects.c:3496
 msgid "output pack to stdout"
 msgstr ""
 
-#: builtin/pack-objects.c:3426
+#: builtin/pack-objects.c:3498
 msgid "include tag objects that refer to objects to be packed"
 msgstr ""
 
-#: builtin/pack-objects.c:3428
+#: builtin/pack-objects.c:3500
 msgid "keep unreachable objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3430
+#: builtin/pack-objects.c:3502
 msgid "pack loose unreachable objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3432
+#: builtin/pack-objects.c:3504
 msgid "unpack unreachable objects newer than <time>"
 msgstr ""
 
-#: builtin/pack-objects.c:3435
+#: builtin/pack-objects.c:3507
 msgid "use the sparse reachability algorithm"
 msgstr ""
 
-#: builtin/pack-objects.c:3437
+#: builtin/pack-objects.c:3509
 msgid "create thin packs"
 msgstr ""
 
-#: builtin/pack-objects.c:3439
+#: builtin/pack-objects.c:3511
 msgid "create packs suitable for shallow fetches"
 msgstr ""
 
-#: builtin/pack-objects.c:3441
+#: builtin/pack-objects.c:3513
 msgid "ignore packs that have companion .keep file"
 msgstr ""
 
-#: builtin/pack-objects.c:3443
+#: builtin/pack-objects.c:3515
 msgid "ignore this pack"
 msgstr ""
 
-#: builtin/pack-objects.c:3445
+#: builtin/pack-objects.c:3517
 msgid "pack compression level"
 msgstr ""
 
-#: builtin/pack-objects.c:3447
+#: builtin/pack-objects.c:3519
 msgid "do not hide commits by grafts"
 msgstr ""
 
-#: builtin/pack-objects.c:3449
+#: builtin/pack-objects.c:3521
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3451
+#: builtin/pack-objects.c:3523
 msgid "write a bitmap index together with the pack index"
 msgstr ""
 
-#: builtin/pack-objects.c:3455
+#: builtin/pack-objects.c:3527
 msgid "write a bitmap index if possible"
 msgstr ""
 
-#: builtin/pack-objects.c:3459
+#: builtin/pack-objects.c:3531
 msgid "handling for missing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3462
+#: builtin/pack-objects.c:3534
 msgid "do not pack objects in promisor packfiles"
 msgstr ""
 
-#: builtin/pack-objects.c:3464
+#: builtin/pack-objects.c:3536
 msgid "respect islands during delta compression"
 msgstr ""
 
-#: builtin/pack-objects.c:3493
+#: builtin/pack-objects.c:3538
+msgid "protocol"
+msgstr ""
+
+#: builtin/pack-objects.c:3539
+msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
+msgstr ""
+
+#: builtin/pack-objects.c:3568
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr ""
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3573
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr ""
 
-#: builtin/pack-objects.c:3552
+#: builtin/pack-objects.c:3627
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 
-#: builtin/pack-objects.c:3554
+#: builtin/pack-objects.c:3629
 msgid "minimum pack size limit is 1 MiB"
 msgstr ""
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3634
 msgid "--thin cannot be used to build an indexable pack"
 msgstr ""
 
-#: builtin/pack-objects.c:3562
+#: builtin/pack-objects.c:3637
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr ""
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3643
 msgid "cannot use --filter without --stdout"
 msgstr ""
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3703
 msgid "Enumerating objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3658
+#: builtin/pack-objects.c:3734
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -17669,7 +17848,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr ""
 
-#: builtin/receive-pack.c:843
+#: builtin/receive-pack.c:844
 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"
@@ -17686,7 +17865,7 @@
 "'receive.denyCurrentBranch' configuration variable to 'refuse'."
 msgstr ""
 
-#: builtin/receive-pack.c:863
+#: builtin/receive-pack.c:864
 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"
@@ -17698,11 +17877,11 @@
 "To squelch this message, you can set it to 'refuse'."
 msgstr ""
 
-#: builtin/receive-pack.c:1960
+#: builtin/receive-pack.c:1970
 msgid "quiet"
 msgstr ""
 
-#: builtin/receive-pack.c:1974
+#: builtin/receive-pack.c:1984
 msgid "You must specify a directory."
 msgstr ""
 
@@ -19179,6 +19358,14 @@
 msgid "cannot find commit %s (%s)"
 msgstr ""
 
+#: builtin/show-index.c:21
+msgid "hash-algorithm"
+msgstr ""
+
+#: builtin/show-index.c:31
+msgid "Unknown hash algorithm"
+msgstr ""
+
 #: builtin/show-ref.c:12
 msgid ""
 "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
@@ -19229,50 +19416,54 @@
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr ""
 
-#: builtin/sparse-checkout.c:212
+#: builtin/sparse-checkout.c:216
 msgid "failed to create directory for sparse-checkout file"
 msgstr ""
 
-#: builtin/sparse-checkout.c:253
+#: builtin/sparse-checkout.c:257
+msgid "unable to upgrade repository format to enable worktreeConfig"
+msgstr ""
+
+#: builtin/sparse-checkout.c:259
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr ""
 
-#: builtin/sparse-checkout.c:270
+#: builtin/sparse-checkout.c:276
 msgid "git sparse-checkout init [--cone]"
 msgstr ""
 
-#: builtin/sparse-checkout.c:289
+#: builtin/sparse-checkout.c:295
 msgid "initialize the sparse-checkout in cone mode"
 msgstr ""
 
-#: builtin/sparse-checkout.c:326
+#: builtin/sparse-checkout.c:332
 #, c-format
 msgid "failed to open '%s'"
 msgstr ""
 
-#: builtin/sparse-checkout.c:383
+#: builtin/sparse-checkout.c:389
 #, c-format
 msgid "could not normalize path %s"
 msgstr ""
 
-#: builtin/sparse-checkout.c:395
+#: builtin/sparse-checkout.c:401
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr ""
 
-#: builtin/sparse-checkout.c:420
+#: builtin/sparse-checkout.c:426
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr ""
 
-#: builtin/sparse-checkout.c:474 builtin/sparse-checkout.c:498
+#: builtin/sparse-checkout.c:480 builtin/sparse-checkout.c:504
 msgid "unable to load existing sparse-checkout patterns"
 msgstr ""
 
-#: builtin/sparse-checkout.c:543
+#: builtin/sparse-checkout.c:549
 msgid "read patterns from standard in"
 msgstr ""
 
-#: builtin/sparse-checkout.c:580
+#: builtin/sparse-checkout.c:586
 msgid "error while refreshing working directory"
 msgstr ""
 
@@ -19934,12 +20125,37 @@
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr ""
 
-#: builtin/submodule--helper.c:2323 git.c:436 git.c:683
+#: builtin/submodule--helper.c:2294
+msgid "set the default tracking branch to master"
+msgstr ""
+
+#: builtin/submodule--helper.c:2296
+msgid "set the default tracking branch"
+msgstr ""
+
+#: builtin/submodule--helper.c:2300
+msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
+msgstr ""
+
+#: builtin/submodule--helper.c:2301
+msgid ""
+"git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
+msgstr ""
+
+#: builtin/submodule--helper.c:2308
+msgid "--branch or --default required"
+msgstr ""
+
+#: builtin/submodule--helper.c:2311
+msgid "--branch and --default are mutually exclusive"
+msgstr ""
+
+#: builtin/submodule--helper.c:2367 git.c:436 git.c:683
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr ""
 
-#: builtin/submodule--helper.c:2329
+#: builtin/submodule--helper.c:2373
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr ""
@@ -20538,244 +20754,238 @@
 msgid "git worktree unlock <path>"
 msgstr ""
 
-#: builtin/worktree.c:60 builtin/worktree.c:894
+#: builtin/worktree.c:60 builtin/worktree.c:972
 #, c-format
 msgid "failed to delete '%s'"
 msgstr ""
 
-#: builtin/worktree.c:79
-#, c-format
-msgid "Removing worktrees/%s: not a valid directory"
-msgstr ""
-
 #: builtin/worktree.c:85
-#, c-format
-msgid "Removing worktrees/%s: gitdir file does not exist"
+msgid "not a valid directory"
 msgstr ""
 
-#: builtin/worktree.c:90 builtin/worktree.c:99
-#, c-format
-msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
+#: builtin/worktree.c:91
+msgid "gitdir file does not exist"
 msgstr ""
 
-#: builtin/worktree.c:109
+#: builtin/worktree.c:96 builtin/worktree.c:105
 #, c-format
-msgid ""
-"Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
-"%<PRIuMAX>)"
+msgid "unable to read gitdir file (%s)"
 msgstr ""
 
-#: builtin/worktree.c:117
+#: builtin/worktree.c:115
 #, c-format
-msgid "Removing worktrees/%s: invalid gitdir file"
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
 msgstr ""
 
-#: builtin/worktree.c:126
-#, c-format
-msgid "Removing worktrees/%s: gitdir file points to non-existent location"
+#: builtin/worktree.c:123
+msgid "invalid gitdir file"
 msgstr ""
 
-#: builtin/worktree.c:165
+#: builtin/worktree.c:131
+msgid "gitdir file points to non-existent location"
+msgstr ""
+
+#: builtin/worktree.c:146
+#, c-format
+msgid "Removing %s/%s: %s"
+msgstr ""
+
+#: builtin/worktree.c:221
 msgid "report pruned working trees"
 msgstr ""
 
-#: builtin/worktree.c:167
+#: builtin/worktree.c:223
 msgid "expire working trees older than <time>"
 msgstr ""
 
-#: builtin/worktree.c:234
+#: builtin/worktree.c:293
 #, c-format
 msgid "'%s' already exists"
 msgstr ""
 
-#: builtin/worktree.c:244
+#: builtin/worktree.c:302
 #, c-format
-msgid "unable to re-add worktree '%s'"
+msgid "unusable worktree destination '%s'"
 msgstr ""
 
-#: builtin/worktree.c:249
+#: builtin/worktree.c:307
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
-"use 'add -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
+"use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
 
-#: builtin/worktree.c:251
+#: builtin/worktree.c:309
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
-"use 'add -f' to override, or 'prune' or 'remove' to clear"
+"use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
 
-#: builtin/worktree.c:301
+#: builtin/worktree.c:360
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr ""
 
-#: builtin/worktree.c:435 builtin/worktree.c:441
+#: builtin/worktree.c:494 builtin/worktree.c:500
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr ""
 
-#: builtin/worktree.c:437
+#: builtin/worktree.c:496
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr ""
 
-#: builtin/worktree.c:446
+#: builtin/worktree.c:505
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr ""
 
-#: builtin/worktree.c:452
+#: builtin/worktree.c:511
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr ""
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:552
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr ""
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:555
 msgid "create a new branch"
 msgstr ""
 
-#: builtin/worktree.c:498
+#: builtin/worktree.c:557
 msgid "create or reset a branch"
 msgstr ""
 
-#: builtin/worktree.c:500
+#: builtin/worktree.c:559
 msgid "populate the new working tree"
 msgstr ""
 
-#: builtin/worktree.c:501
+#: builtin/worktree.c:560
 msgid "keep the new working tree locked"
 msgstr ""
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:563
 msgid "set up tracking mode (see git-branch(1))"
 msgstr ""
 
-#: builtin/worktree.c:507
+#: builtin/worktree.c:566
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr ""
 
-#: builtin/worktree.c:515
+#: builtin/worktree.c:574
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr ""
 
-#: builtin/worktree.c:576
+#: builtin/worktree.c:635
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr ""
 
-#: builtin/worktree.c:676
+#: builtin/worktree.c:755
 msgid "reason for locking"
 msgstr ""
 
-#: builtin/worktree.c:688 builtin/worktree.c:721 builtin/worktree.c:795
-#: builtin/worktree.c:922
+#: builtin/worktree.c:767 builtin/worktree.c:800 builtin/worktree.c:874
+#: builtin/worktree.c:1000
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr ""
 
-#: builtin/worktree.c:690 builtin/worktree.c:723
+#: builtin/worktree.c:769 builtin/worktree.c:802
 msgid "The main working tree cannot be locked or unlocked"
 msgstr ""
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:774
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr ""
 
-#: builtin/worktree.c:697
+#: builtin/worktree.c:776
 #, c-format
 msgid "'%s' is already locked"
 msgstr ""
 
-#: builtin/worktree.c:725
+#: builtin/worktree.c:804
 #, c-format
 msgid "'%s' is not locked"
 msgstr ""
 
-#: builtin/worktree.c:766
+#: builtin/worktree.c:845
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 
-#: builtin/worktree.c:774
+#: builtin/worktree.c:853
 msgid "force move even if worktree is dirty or locked"
 msgstr ""
 
-#: builtin/worktree.c:797 builtin/worktree.c:924
+#: builtin/worktree.c:876 builtin/worktree.c:1002
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr ""
 
-#: builtin/worktree.c:802
+#: builtin/worktree.c:881
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr ""
 
-#: builtin/worktree.c:808
-#, c-format
-msgid "target '%s' already exists"
-msgstr ""
-
-#: builtin/worktree.c:816
+#: builtin/worktree.c:894
 #, 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:818
+#: builtin/worktree.c:896
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:821
+#: builtin/worktree.c:899
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr ""
 
-#: builtin/worktree.c:826
+#: builtin/worktree.c:904
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr ""
 
-#: builtin/worktree.c:874
+#: builtin/worktree.c:952
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr ""
 
-#: builtin/worktree.c:878
+#: builtin/worktree.c:956
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 
-#: builtin/worktree.c:883
+#: builtin/worktree.c:961
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr ""
 
-#: builtin/worktree.c:906
+#: builtin/worktree.c:984
 msgid "force removal even if worktree is dirty or locked"
 msgstr ""
 
-#: builtin/worktree.c:929
+#: builtin/worktree.c:1007
 #, 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:931
+#: builtin/worktree.c:1009
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
 msgstr ""
 
-#: builtin/worktree.c:934
+#: builtin/worktree.c:1012
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr ""
@@ -20796,32 +21006,32 @@
 msgid "only useful for debugging"
 msgstr ""
 
-#: bugreport.c:14
+#: bugreport.c:15
 msgid "git version:\n"
 msgstr ""
 
-#: bugreport.c:20
+#: bugreport.c:21
 #, c-format
 msgid "uname() failed with error '%s' (%d)\n"
 msgstr ""
 
-#: bugreport.c:30
+#: bugreport.c:31
 msgid "compiler info: "
 msgstr ""
 
-#: bugreport.c:32
+#: bugreport.c:34
 msgid "libc info: "
 msgstr ""
 
-#: bugreport.c:74
+#: bugreport.c:80
 msgid "not run from a git repository - no hooks to show\n"
 msgstr ""
 
-#: bugreport.c:84
+#: bugreport.c:90
 msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
 msgstr ""
 
-#: bugreport.c:91
+#: bugreport.c:97
 msgid ""
 "Thank you for filling out a Git bug report!\n"
 "Please answer the following questions to help us understand your issue.\n"
@@ -20840,66 +21050,76 @@
 "You can delete any lines you don't wish to share.\n"
 msgstr ""
 
-#: bugreport.c:130
+#: bugreport.c:136
 msgid "specify a destination for the bugreport file"
 msgstr ""
 
-#: bugreport.c:132
+#: bugreport.c:138
 msgid "specify a strftime format suffix for the filename"
 msgstr ""
 
-#: bugreport.c:156
+#: bugreport.c:162
 #, c-format
 msgid "could not create leading directories for '%s'"
 msgstr ""
 
-#: bugreport.c:163
+#: bugreport.c:169
 msgid "System Info"
 msgstr ""
 
-#: bugreport.c:166
+#: bugreport.c:172
 msgid "Enabled Hooks"
 msgstr ""
 
-#: bugreport.c:174
+#: bugreport.c:180
 #, c-format
 msgid "couldn't create a new file at '%s'"
 msgstr ""
 
-#: bugreport.c:186
+#: bugreport.c:184
+#, c-format
+msgid "unable to write to %s"
+msgstr ""
+
+#: bugreport.c:194
 #, c-format
 msgid "Created new report at '%s'.\n"
 msgstr ""
 
-#: fast-import.c:3085
+#: fast-import.c:3100
 #, c-format
 msgid "Missing from marks for submodule '%s'"
 msgstr ""
 
-#: fast-import.c:3087
+#: fast-import.c:3102
 #, c-format
 msgid "Missing to marks for submodule '%s'"
 msgstr ""
 
-#: fast-import.c:3222
+#: fast-import.c:3237
 #, c-format
 msgid "Expected 'mark' command, got %s"
 msgstr ""
 
-#: fast-import.c:3227
+#: fast-import.c:3242
 #, c-format
 msgid "Expected 'to' command, got %s"
 msgstr ""
 
-#: fast-import.c:3317
+#: fast-import.c:3334
 msgid "Expected format name:filename for submodule rewrite option"
 msgstr ""
 
-#: fast-import.c:3371
+#: fast-import.c:3388
 #, c-format
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr ""
 
+#: http-fetch.c:111
+#, c-format
+msgid "argument to --packfile must be a valid hash (got '%s')"
+msgstr ""
+
 #: credential-cache--daemon.c:223
 #, c-format
 msgid ""
@@ -21057,30 +21277,30 @@
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr ""
 
-#: http.c:914
+#: http.c:910
 msgid "CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0"
 msgstr ""
 
-#: http.c:993
+#: http.c:989
 msgid "Protocol restrictions not supported with cURL < 7.19.4"
 msgstr ""
 
-#: http.c:1139
+#: http.c:1132
 #, c-format
 msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
 msgstr ""
 
-#: http.c:1146
+#: http.c:1139
 #, c-format
 msgid "Could not set SSL backend to '%s': cURL was built without SSL backends"
 msgstr ""
 
-#: http.c:1150
+#: http.c:1143
 #, c-format
 msgid "Could not set SSL backend to '%s': already set"
 msgstr ""
 
-#: http.c:2032
+#: http.c:2025
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -21088,111 +21308,134 @@
 "   redirect: %s"
 msgstr ""
 
-#: remote-curl.c:166
+#: remote-curl.c:168
 #, c-format
 msgid "invalid quoting in push-option value: '%s'"
 msgstr ""
 
-#: remote-curl.c:263
+#: remote-curl.c:295
 #, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
 msgstr ""
 
-#: remote-curl.c:364
+#: remote-curl.c:396
 msgid "invalid server response; expected service, got flush packet"
 msgstr ""
 
-#: remote-curl.c:395
+#: remote-curl.c:427
 #, c-format
 msgid "invalid server response; got '%s'"
 msgstr ""
 
-#: remote-curl.c:455
+#: remote-curl.c:487
 #, c-format
 msgid "repository '%s' not found"
 msgstr ""
 
-#: remote-curl.c:459
+#: remote-curl.c:491
 #, c-format
 msgid "Authentication failed for '%s'"
 msgstr ""
 
-#: remote-curl.c:463
+#: remote-curl.c:495
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr ""
 
-#: remote-curl.c:469
+#: remote-curl.c:501
 #, c-format
 msgid "redirecting to %s"
 msgstr ""
 
-#: remote-curl.c:593
+#: remote-curl.c:630
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr ""
 
-#: remote-curl.c:673
+#: remote-curl.c:642
+msgid "remote server sent stateless separator"
+msgstr ""
+
+#: remote-curl.c:712
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr ""
 
-#: remote-curl.c:733
+#: remote-curl.c:742
+#, c-format
+msgid "remote-curl: bad line length character: %.4s"
+msgstr ""
+
+#: remote-curl.c:744
+msgid "remote-curl: unexpected response end packet"
+msgstr ""
+
+#: remote-curl.c:820
 #, c-format
 msgid "RPC failed; %s"
 msgstr ""
 
-#: remote-curl.c:773
+#: remote-curl.c:860
 msgid "cannot handle pushes this big"
 msgstr ""
 
-#: remote-curl.c:888
+#: remote-curl.c:975
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr ""
 
-#: remote-curl.c:892
+#: remote-curl.c:979
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr ""
 
-#: remote-curl.c:1023
+#: remote-curl.c:1029
+#, c-format
+msgid "%d bytes of length header were received"
+msgstr ""
+
+#: remote-curl.c:1031
+#, c-format
+msgid "%d bytes of body are still expected"
+msgstr ""
+
+#: remote-curl.c:1120
 msgid "dumb http transport does not support shallow capabilities"
 msgstr ""
 
-#: remote-curl.c:1038
+#: remote-curl.c:1135
 msgid "fetch failed."
 msgstr ""
 
-#: remote-curl.c:1086
+#: remote-curl.c:1183
 msgid "cannot fetch by sha1 over smart http"
 msgstr ""
 
-#: remote-curl.c:1130 remote-curl.c:1136
+#: remote-curl.c:1227 remote-curl.c:1233
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr ""
 
-#: remote-curl.c:1148 remote-curl.c:1263
+#: remote-curl.c:1245 remote-curl.c:1360
 #, c-format
 msgid "http transport does not support %s"
 msgstr ""
 
-#: remote-curl.c:1184
+#: remote-curl.c:1281
 msgid "git-http-push failed"
 msgstr ""
 
-#: remote-curl.c:1369
+#: remote-curl.c:1466
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr ""
 
-#: remote-curl.c:1401
+#: remote-curl.c:1498
 msgid "remote-curl: error reading command stream from git"
 msgstr ""
 
-#: remote-curl.c:1408
+#: remote-curl.c:1505
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr ""
 
-#: remote-curl.c:1448
+#: remote-curl.c:1546
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr ""
@@ -22189,26 +22432,26 @@
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:878
+#: git-submodule.sh:852
 msgid "The --cached option cannot be used with the --files option"
 msgstr ""
 
-#: git-submodule.sh:930
+#: git-submodule.sh:904
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr ""
 
-#: git-submodule.sh:950
+#: git-submodule.sh:924
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr ""
 
-#: git-submodule.sh:953
+#: git-submodule.sh:927
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr ""
 
-#: git-submodule.sh:956
+#: git-submodule.sh:930
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -22557,44 +22800,44 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: git-add--interactive.perl:1053
+#: git-add--interactive.perl:1055
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
 msgstr ""
 
-#: git-add--interactive.perl:1056
+#: git-add--interactive.perl:1058
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
 msgstr ""
 
-#: git-add--interactive.perl:1059
+#: git-add--interactive.perl:1061
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
 msgstr ""
 
-#: git-add--interactive.perl:1062 git-add--interactive.perl:1071
-#: git-add--interactive.perl:1077
+#: git-add--interactive.perl:1064 git-add--interactive.perl:1073
+#: git-add--interactive.perl:1079
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
 msgstr ""
 
-#: git-add--interactive.perl:1065 git-add--interactive.perl:1068
-#: git-add--interactive.perl:1074
+#: git-add--interactive.perl:1067 git-add--interactive.perl:1070
+#: git-add--interactive.perl:1076
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
 msgstr ""
 
-#: git-add--interactive.perl:1111
+#: git-add--interactive.perl:1113
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr ""
 
-#: git-add--interactive.perl:1118
+#: git-add--interactive.perl:1120
 #, perl-format
 msgid ""
 "---\n"
@@ -22603,12 +22846,12 @@
 "Lines starting with %s will be removed.\n"
 msgstr ""
 
-#: git-add--interactive.perl:1140
+#: git-add--interactive.perl:1142
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr ""
 
-#: git-add--interactive.perl:1248
+#: git-add--interactive.perl:1250
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -22617,7 +22860,7 @@
 "d - do not stage this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1254
+#: git-add--interactive.perl:1256
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -22626,7 +22869,7 @@
 "d - do not stash this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1260
+#: git-add--interactive.perl:1262
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -22635,7 +22878,7 @@
 "d - do not unstage this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1268
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -22644,7 +22887,7 @@
 "d - do not apply this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1272 git-add--interactive.perl:1290
+#: git-add--interactive.perl:1274 git-add--interactive.perl:1292
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -22653,7 +22896,7 @@
 "d - do not discard this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1278
+#: git-add--interactive.perl:1280
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -22662,7 +22905,7 @@
 "d - do not discard this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1284
+#: git-add--interactive.perl:1286
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -22671,7 +22914,7 @@
 "d - do not apply this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1296
+#: git-add--interactive.perl:1298
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -22680,7 +22923,7 @@
 "d - do not apply this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1311
+#: git-add--interactive.perl:1313
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -22693,85 +22936,90 @@
 "? - print help\n"
 msgstr ""
 
-#: git-add--interactive.perl:1342
+#: git-add--interactive.perl:1344
 msgid "The selected hunks do not apply to the index!\n"
 msgstr ""
 
-#: git-add--interactive.perl:1357
+#: git-add--interactive.perl:1359
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr ""
 
-#: git-add--interactive.perl:1468
+#: git-add--interactive.perl:1478
 #, perl-format
 msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1469
+#: git-add--interactive.perl:1479
 #, perl-format
 msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1470
+#: git-add--interactive.perl:1480
+#, perl-format
+msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+
+#: git-add--interactive.perl:1481
 #, perl-format
 msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1570
+#: git-add--interactive.perl:1587
 msgid "No other hunks to goto\n"
 msgstr ""
 
-#: git-add--interactive.perl:1588
+#: git-add--interactive.perl:1605
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr ""
 
-#: git-add--interactive.perl:1593
+#: git-add--interactive.perl:1610
 #, perl-format
 msgid "Sorry, only %d hunk available.\n"
 msgid_plural "Sorry, only %d hunks available.\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: git-add--interactive.perl:1619
+#: git-add--interactive.perl:1636
 msgid "No other hunks to search\n"
 msgstr ""
 
-#: git-add--interactive.perl:1636
+#: git-add--interactive.perl:1653
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr ""
 
-#: git-add--interactive.perl:1646
+#: git-add--interactive.perl:1663
 msgid "No hunk matches the given pattern\n"
 msgstr ""
 
-#: git-add--interactive.perl:1658 git-add--interactive.perl:1680
+#: git-add--interactive.perl:1675 git-add--interactive.perl:1697
 msgid "No previous hunk\n"
 msgstr ""
 
-#: git-add--interactive.perl:1667 git-add--interactive.perl:1686
+#: git-add--interactive.perl:1684 git-add--interactive.perl:1703
 msgid "No next hunk\n"
 msgstr ""
 
-#: git-add--interactive.perl:1692
+#: git-add--interactive.perl:1709
 msgid "Sorry, cannot split this hunk\n"
 msgstr ""
 
-#: git-add--interactive.perl:1698
+#: git-add--interactive.perl:1715
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: git-add--interactive.perl:1708
+#: git-add--interactive.perl:1725
 msgid "Sorry, cannot edit this hunk\n"
 msgstr ""
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1773
+#: git-add--interactive.perl:1790
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -22782,19 +23030,19 @@
 "changes\n"
 msgstr ""
 
-#: git-add--interactive.perl:1790 git-add--interactive.perl:1795
-#: git-add--interactive.perl:1798 git-add--interactive.perl:1805
-#: git-add--interactive.perl:1808 git-add--interactive.perl:1815
-#: git-add--interactive.perl:1819 git-add--interactive.perl:1825
+#: git-add--interactive.perl:1807 git-add--interactive.perl:1812
+#: git-add--interactive.perl:1815 git-add--interactive.perl:1822
+#: git-add--interactive.perl:1825 git-add--interactive.perl:1832
+#: git-add--interactive.perl:1836 git-add--interactive.perl:1842
 msgid "missing --"
 msgstr ""
 
-#: git-add--interactive.perl:1821
+#: git-add--interactive.perl:1838
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr ""
 
-#: git-add--interactive.perl:1827 git-add--interactive.perl:1833
+#: git-add--interactive.perl:1844 git-add--interactive.perl:1850
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr ""
@@ -23072,56 +23320,56 @@
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1718
+#: git-send-email.perl:1722
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1753
+#: git-send-email.perl:1757
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1864
+#: git-send-email.perl:1868
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr ""
 
-#: git-send-email.perl:1871
+#: git-send-email.perl:1875
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1879
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr ""
 
-#: git-send-email.perl:1905
+#: git-send-email.perl:1909
 msgid "cannot send message as 7bit"
 msgstr ""
 
-#: git-send-email.perl:1913
+#: git-send-email.perl:1917
 msgid "invalid transfer encoding"
 msgstr ""
 
-#: git-send-email.perl:1954 git-send-email.perl:2006 git-send-email.perl:2016
+#: git-send-email.perl:1958 git-send-email.perl:2010 git-send-email.perl:2020
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr ""
 
-#: git-send-email.perl:1957
+#: git-send-email.perl:1961
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr ""
 
-#: git-send-email.perl:1974
+#: git-send-email.perl:1978
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr ""
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:1978
+#: git-send-email.perl:1982
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr ""
diff --git a/po/it.po b/po/it.po
index 769d9e0..53523e7 100644
--- a/po/it.po
+++ b/po/it.po
@@ -11,8 +11,8 @@
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-05-27 07:23+0800\n"
-"PO-Revision-Date: 2020-05-27 18:21+0200\n"
+"POT-Creation-Date: 2020-07-10 09:53+0800\n"
+"PO-Revision-Date: 2020-07-11 15:31+0200\n"
 "Last-Translator: Alessandro Menti <alessandro.menti@alessandromenti.it>\n"
 "Language-Team: Italian <>\n"
 "Language: it\n"
@@ -20,7 +20,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 20.04.1\n"
+"X-Generator: Lokalize 20.04.2\n"
 
 #: add-interactive.c:368
 #, c-format
@@ -115,21 +115,21 @@
 msgid "ignoring unmerged: %s"
 msgstr "ignoro ciò che non è stato sottoposto a merge: %s"
 
-#: add-interactive.c:929 add-patch.c:1675 git-add--interactive.perl:1366
+#: add-interactive.c:929 add-patch.c:1691 git-add--interactive.perl:1368
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Sono stati modificati solo file binari.\n"
 
-#: add-interactive.c:931 add-patch.c:1673 git-add--interactive.perl:1368
+#: add-interactive.c:931 add-patch.c:1689 git-add--interactive.perl:1370
 #, c-format
 msgid "No changes.\n"
 msgstr "Nessuna modifica.\n"
 
-#: add-interactive.c:935 git-add--interactive.perl:1376
+#: add-interactive.c:935 git-add--interactive.perl:1378
 msgid "Patch update"
 msgstr "Aggiornamento patch"
 
-#: add-interactive.c:974 git-add--interactive.perl:1754
+#: add-interactive.c:974 git-add--interactive.perl:1771
 msgid "Review diff"
 msgstr "Rivedi diff"
 
@@ -204,11 +204,11 @@
 msgid "(empty) select nothing"
 msgstr "(vuoto) non selezionare nulla"
 
-#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1851
+#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1868
 msgid "*** Commands ***"
 msgstr "*** Comandi ***"
 
-#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1848
+#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1865
 msgid "What now"
 msgstr "Cosa faccio ora"
 
@@ -225,7 +225,7 @@
 #: builtin/merge.c:276 builtin/pull.c:190 builtin/submodule--helper.c:409
 #: builtin/submodule--helper.c:1394 builtin/submodule--helper.c:1397
 #: builtin/submodule--helper.c:1902 builtin/submodule--helper.c:1905
-#: builtin/submodule--helper.c:2148 bugreport.c:129
+#: builtin/submodule--helper.c:2148 bugreport.c:135
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "percorso"
@@ -234,27 +234,32 @@
 msgid "could not refresh index"
 msgstr "impossibile aggiornare l'indice"
 
-#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1765
+#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1782
 #, c-format
 msgid "Bye.\n"
 msgstr "Ciao.\n"
 
-#: add-patch.c:34 git-add--interactive.perl:1428
+#: add-patch.c:34 git-add--interactive.perl:1430
 #, c-format, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "Modifica modo stage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:35 git-add--interactive.perl:1429
+#: add-patch.c:35 git-add--interactive.perl:1431
 #, c-format, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "Eliminazione stage [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:36 git-add--interactive.perl:1430
+#: add-patch.c:36 git-add--interactive.perl:1432
+#, c-format, perl-format
+msgid "Stage addition [y,n,q,a,d%s,?]? "
+msgstr "Aggiunta stage [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:37 git-add--interactive.perl:1433
 #, c-format, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Eseguire lo stage di quest'hunk [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:38
+#: add-patch.c:39
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "staging."
@@ -262,7 +267,7 @@
 "Se la patch viene applicata senza problemi, l'hunk modificato sarà "
 "contrassegnato immediatamente per l'aggiunta all'area di staging."
 
-#: add-patch.c:41
+#: add-patch.c:42
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -279,22 +284,27 @@
 "d - non aggiungere né quest'hunk né quelli successivi nel file all'area di "
 "staging\n"
 
-#: add-patch.c:55 git-add--interactive.perl:1433
+#: add-patch.c:56 git-add--interactive.perl:1436
 #, c-format, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "Modifica modo stash [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:56 git-add--interactive.perl:1434
+#: add-patch.c:57 git-add--interactive.perl:1437
 #, c-format, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "Eliminazione stash [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:57 git-add--interactive.perl:1435
+#: add-patch.c:58 git-add--interactive.perl:1438
+#, c-format, perl-format
+msgid "Stash addition [y,n,q,a,d%s,?]? "
+msgstr "Aggiunta stash [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:59 git-add--interactive.perl:1439
 #, c-format, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "Eseguire lo stash di quest'hunk [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:59
+#: add-patch.c:61
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "stashing."
@@ -302,7 +312,7 @@
 "Se la patch viene applicata senza problemi, l'hunk modificato sarà "
 "contrassegnato immediatamente per lo stash."
 
-#: add-patch.c:62
+#: add-patch.c:64
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -316,22 +326,27 @@
 "a - esegui lo stash di quest'hunk e di tutti quelli successivi nel file\n"
 "d - non eseguire lo stash né di quest'hunk né di quelli successivi nel file\n"
 
-#: add-patch.c:78 git-add--interactive.perl:1438
+#: add-patch.c:80 git-add--interactive.perl:1442
 #, c-format, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr "Rimozione modifica modo dall'area di staging [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:79 git-add--interactive.perl:1439
+#: add-patch.c:81 git-add--interactive.perl:1443
 #, c-format, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "Rimozione eliminazione dall'area di staging [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:80 git-add--interactive.perl:1440
+#: add-patch.c:82 git-add--interactive.perl:1444
+#, c-format, perl-format
+msgid "Unstage addition [y,n,q,a,d%s,?]? "
+msgstr "Rimozione aggiunta dall'area di staging [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:83 git-add--interactive.perl:1445
 #, c-format, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Rimuovere quest'hunk dall'area di staging [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:82
+#: add-patch.c:85
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "unstaging."
@@ -339,7 +354,7 @@
 "Se la patch viene applicata senza problemi, l'hunk modificato sarà "
 "contrassegnato immediatamente per la rimozione dall'area di staging."
 
-#: add-patch.c:85
+#: add-patch.c:88
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -356,22 +371,27 @@
 "d - non rimuovere né quest'hunk né quelli successivi nel file dall'area di "
 "staging\n"
 
-#: add-patch.c:100 git-add--interactive.perl:1443
+#: add-patch.c:103 git-add--interactive.perl:1448
 #, c-format, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr "Applicare la modifica modo all'indice [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:101 git-add--interactive.perl:1444
+#: add-patch.c:104 git-add--interactive.perl:1449
 #, c-format, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "Applicare l'eliminazione all'indice [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:102 git-add--interactive.perl:1445
+#: add-patch.c:105 git-add--interactive.perl:1450
+#, c-format, perl-format
+msgid "Apply addition to index [y,n,q,a,d%s,?]? "
+msgstr "Applicare l'aggiunta all'indice [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:106 git-add--interactive.perl:1451
 #, c-format, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr "Applicare quest'hunk all'indice [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:104 add-patch.c:169 add-patch.c:212
+#: 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."
@@ -379,7 +399,7 @@
 "Se la patch viene applicata senza problemi, l'hunk modificato sarà "
 "contrassegnato immediatamente per l'applicazione."
 
-#: add-patch.c:107
+#: add-patch.c:111
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -393,25 +413,31 @@
 "a - applica quest'hunk e tutti quelli successivi nel file\n"
 "d - non applicare né quest'hunk né quelli successivi nel file\n"
 
-#: add-patch.c:122 git-add--interactive.perl:1448
-#: git-add--interactive.perl:1463
+#: add-patch.c:126 git-add--interactive.perl:1454
+#: git-add--interactive.perl:1472
 #, c-format, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr "Scartare le modifiche modo dall'albero di lavoro [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:123 git-add--interactive.perl:1449
-#: git-add--interactive.perl:1464
+#: add-patch.c:127 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
 #, c-format, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr "Scartare l'eliminazione dall'albero di lavoro [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:124 git-add--interactive.perl:1450
-#: git-add--interactive.perl:1465
+#: add-patch.c:128 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
+#, c-format, perl-format
+msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
+msgstr "Scartare l'aggiunta dall'albero di lavoro [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:129 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
 #, c-format, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr "Scartare quest'hunk dall'albero di lavoro [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:126 add-patch.c:148 add-patch.c:191
+#: 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."
@@ -419,7 +445,7 @@
 "Se la patch viene applicata senza problemi, l'hunk modificato sarà "
 "contrassegnato immediatamente per la rimozione."
 
-#: add-patch.c:129 add-patch.c:194
+#: add-patch.c:134 add-patch.c:202
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -433,26 +459,32 @@
 "a - rimuovi quest'hunk e tutti quelli successivi nel file\n"
 "d - non rimuovere né quest'hunk né quelli successivi nel file\n"
 
-#: add-patch.c:144 add-patch.c:187 git-add--interactive.perl:1453
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1460
 #, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Scartare la modifica modo dall'indice e dall'albero di lavoro [y,n,q,a,d"
 "%s,?]? "
 
-#: add-patch.c:145 add-patch.c:188 git-add--interactive.perl:1454
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1461
 #, c-format, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Scartare l'eliminazione dall'indice e dall'albero di lavoro [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:146 add-patch.c:189 git-add--interactive.perl:1455
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1462
+#, c-format, perl-format
+msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"Scartare l'aggiunta dall'indice e dall'albero di lavoro [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1463
 #, c-format, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Scartare quest'hunk dall'indice e dall'albero di lavoro [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:151
+#: add-patch.c:157
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -466,26 +498,32 @@
 "a - rimuovi quest'hunk e tutti quelli successivi nel file\n"
 "d - non rimuovere né quest'hunk né quelli successivi nel file\n"
 
-#: add-patch.c:165 add-patch.c:208 git-add--interactive.perl:1458
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1466
 #, c-format, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Applicare la modifica modo all'indice e all'albero di lavoro [y,n,q,a,d"
 "%s,?]? "
 
-#: add-patch.c:166 add-patch.c:209 git-add--interactive.perl:1459
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1467
 #, c-format, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Applicare l'eliminazione all'indice e all'albero di lavoro [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:167 add-patch.c:210 git-add--interactive.perl:1460
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1468
+#, c-format, perl-format
+msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"Applicare l'aggiunta all'indice e all'albero di lavoro [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1469
 #, c-format, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Applicare quest'hunk all'indice e all'albero di lavoro [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:172
+#: add-patch.c:179
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -499,7 +537,7 @@
 "a - applica quest'hunk e tutti quelli successivi nel file\n"
 "d - non applicare né quest'hunk né quelli successivi nel file\n"
 
-#: add-patch.c:215
+#: add-patch.c:224
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -513,34 +551,34 @@
 "a - applica quest'hunk e tutti quelli successivi nel file\n"
 "d - non applicare né quest'hunk né quelli successivi nel file\n"
 
-#: add-patch.c:319
+#: add-patch.c:328
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "impossibile analizzare l'header hunk '%.*s'"
 
-#: add-patch.c:338 add-patch.c:342
+#: add-patch.c:347 add-patch.c:351
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "impossibile analizzare l'header hunk colorato '%.*s'"
 
-#: add-patch.c:396
+#: add-patch.c:405
 msgid "could not parse diff"
 msgstr "impossibile analizzare il diff"
 
-#: add-patch.c:415
+#: add-patch.c:424
 msgid "could not parse colored diff"
 msgstr "impossibile analizzare il diff colorato"
 
-#: add-patch.c:429
+#: add-patch.c:438
 #, c-format
 msgid "failed to run '%s'"
 msgstr "esecuzione di '%s' non riuscita"
 
-#: add-patch.c:588
+#: add-patch.c:602
 msgid "mismatched output from interactive.diffFilter"
 msgstr "output di interactive.diffFilter non corrispondente"
 
-#: add-patch.c:589
+#: add-patch.c:603
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -548,7 +586,7 @@
 "Il filtro deve mantenere una corrispondenza uno a uno\n"
 "fra le righe di input e di output."
 
-#: add-patch.c:762
+#: add-patch.c:776
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -557,7 +595,7 @@
 "attesa riga contesto %d in\n"
 "%.*s"
 
-#: add-patch.c:777
+#: add-patch.c:791
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -570,13 +608,13 @@
 "\tnon termina con:\n"
 "%.*s"
 
-#: add-patch.c:1053 git-add--interactive.perl:1112
+#: add-patch.c:1067 git-add--interactive.perl:1114
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr ""
 "Modalità manuale modifica hunt - vedi la fine del file per una guida "
 "veloce.\n"
 
-#: add-patch.c:1057
+#: add-patch.c:1071
 #, c-format
 msgid ""
 "---\n"
@@ -590,7 +628,7 @@
 "Le righe che iniziano con %c saranno rimosse.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1071 git-add--interactive.perl:1126
+#: add-patch.c:1085 git-add--interactive.perl:1128
 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"
@@ -600,11 +638,11 @@
 "di modificarla di nuovo. Se tutte le righe dell'hunk saranno state\n"
 "rimosse, la modifica sarà interrotta e l'hunk non sarà modificato.\n"
 
-#: add-patch.c:1104
+#: add-patch.c:1118
 msgid "could not parse hunk header"
 msgstr "impossibile analizzare l'header hunk"
 
-#: add-patch.c:1149
+#: add-patch.c:1163
 msgid "'git apply --cached' failed"
 msgstr "'git apply --cached' non riuscito"
 
@@ -620,26 +658,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:1218 git-add--interactive.perl:1239
+#: add-patch.c:1232 git-add--interactive.perl:1241
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
 "L'hunk modificato non può essere applicato senza problemi. Modificarlo di "
 "nuovo (se rispondi \"no\", sarà eliminato!) [y/n]? "
 
-#: add-patch.c:1261
+#: add-patch.c:1275
 msgid "The selected hunks do not apply to the index!"
 msgstr "Gli hunk selezionati non si applicano senza problemi all'indice!"
 
-#: add-patch.c:1262 git-add--interactive.perl:1343
+#: add-patch.c:1276 git-add--interactive.perl:1345
 msgid "Apply them to the worktree anyway? "
 msgstr "Vuoi comunque applicarli all'albero di lavoro? "
 
-#: add-patch.c:1269 git-add--interactive.perl:1346
+#: add-patch.c:1283 git-add--interactive.perl:1348
 msgid "Nothing was applied.\n"
 msgstr "Non è stato applicato nulla.\n"
 
-#: add-patch.c:1326
+#: add-patch.c:1340
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -663,69 +701,69 @@
 "e - modifica manualmente l'hunk corrente\n"
 "? - stampa una guida\n"
 
-#: add-patch.c:1447 add-patch.c:1457
+#: add-patch.c:1463 add-patch.c:1473
 msgid "No previous hunk"
 msgstr "Nessun hunk precedente"
 
-#: add-patch.c:1452 add-patch.c:1462
+#: add-patch.c:1468 add-patch.c:1478
 msgid "No next hunk"
 msgstr "Nessun hunk successivo"
 
-#: add-patch.c:1468
+#: add-patch.c:1484
 msgid "No other hunks to goto"
 msgstr "Nessun altro hunk a cui andare"
 
-#: add-patch.c:1479 git-add--interactive.perl:1577
+#: add-patch.c:1495 git-add--interactive.perl:1594
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "a quale hunk desideri andare (premi <Invio> per vederne altri)? "
 
-#: add-patch.c:1480 git-add--interactive.perl:1579
+#: add-patch.c:1496 git-add--interactive.perl:1596
 msgid "go to which hunk? "
 msgstr "a quale hunk desideri andare? "
 
-#: add-patch.c:1491
+#: add-patch.c:1507
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Numero non valido: '%s'"
 
-#: add-patch.c:1496
+#: add-patch.c:1512
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "Mi dispiace, è disponibile solo %d hunk."
 msgstr[1] "Mi dispiace, sono disponibili solo %d hunk."
 
-#: add-patch.c:1505
+#: add-patch.c:1521
 msgid "No other hunks to search"
 msgstr "Nessun altro hunk in cui eseguire la ricerca"
 
-#: add-patch.c:1511 git-add--interactive.perl:1623
+#: add-patch.c:1527 git-add--interactive.perl:1640
 msgid "search for regex? "
 msgstr "cercare un'espressione regolare? "
 
-#: add-patch.c:1526
+#: add-patch.c:1542
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Espressione regolare di ricerca %s malformata: %s"
 
-#: add-patch.c:1543
+#: add-patch.c:1559
 msgid "No hunk matches the given pattern"
 msgstr "Nessun hunk corrisponde al pattern fornito"
 
-#: add-patch.c:1550
+#: add-patch.c:1566
 msgid "Sorry, cannot split this hunk"
 msgstr "Mi dispiace, non posso suddividere quest'hunk"
 
-#: add-patch.c:1554
+#: add-patch.c:1570
 #, c-format
 msgid "Split into %d hunks."
 msgstr "Suddiviso in %d hunk."
 
-#: add-patch.c:1558
+#: add-patch.c:1574
 msgid "Sorry, cannot edit this hunk"
 msgstr "Mi dispiace, non posso modificare quest'hunk"
 
-#: add-patch.c:1609
+#: add-patch.c:1625
 msgid "'git apply' failed"
 msgstr "'git apply' non riuscito"
 
@@ -1433,7 +1471,7 @@
 
 #: apply.c:5008 builtin/am.c:2238 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3458 builtin/rebase.c:1332
+#: builtin/pack-objects.c:3530 builtin/rebase.c:1332
 msgid "action"
 msgstr "azione"
 
@@ -1525,7 +1563,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "percorso troppo lungo (%d caratteri, SHA1: %s): %s"
 
-#: archive-zip.c:480 builtin/pack-objects.c:232 builtin/pack-objects.c:235
+#: archive-zip.c:480 builtin/pack-objects.c:243 builtin/pack-objects.c:246
 #, c-format
 msgid "deflate error (%d)"
 msgstr "errore deflate (%d)"
@@ -1595,8 +1633,8 @@
 msgstr "anteponi <prefisso> a ogni nome percorso nell'archivio"
 
 #: archive.c:467 builtin/blame.c:861 builtin/blame.c:865 builtin/blame.c:866
-#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1162
-#: builtin/fast-export.c:1164 builtin/fast-export.c:1168 builtin/grep.c:907
+#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1208
+#: builtin/fast-export.c:1210 builtin/fast-export.c:1214 builtin/grep.c:907
 #: 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
@@ -1824,10 +1862,10 @@
 "le opzioni --reverse e --first-parent se usate insieme richiedono che sia "
 "specificato l'ultimo commit"
 
-#: blame.c:2821 bundle.c:167 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
+#: blame.c:2821 bundle.c:187 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
 #: sequencer.c:4466 submodule.c:847 builtin/commit.c:1047 builtin/log.c:405
 #: builtin/log.c:1012 builtin/log.c:1541 builtin/log.c:1945 builtin/log.c:2235
-#: builtin/merge.c:415 builtin/pack-objects.c:3276 builtin/pack-objects.c:3291
+#: builtin/merge.c:415 builtin/pack-objects.c:3348 builtin/pack-objects.c:3363
 #: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr "impostazione percorso revisioni non riuscita"
@@ -1996,84 +2034,88 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "L'HEAD dell'albero di lavoro %s non è aggiornato"
 
-#: bundle.c:36
+#: bundle.c:47
 #, c-format
 msgid "'%s' does not look like a v2 bundle file"
 msgstr "'%s' non sembra essere un file bundle v2"
 
-#: bundle.c:64
+#: bundle.c:69
+msgid "unknown hash algorithm length"
+msgstr "lunghezza algoritmo hash sconosciuta"
+
+#: bundle.c:84
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "intestazione non riconosciuta: %s%s (%d)"
 
-#: bundle.c:90 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
+#: bundle.c:110 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
 msgstr "impossibile aprire '%s'"
 
-#: bundle.c:143
+#: bundle.c:163
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Dal repository mancano questi commit richiesti come prerequisito:"
 
-#: bundle.c:146
+#: bundle.c:166
 msgid "need a repository to verify a bundle"
 msgstr "è necessario un repository per verificare un bundle"
 
-#: bundle.c:197
+#: bundle.c:217
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "Il bundle contiene questo riferimento:"
 msgstr[1] "Il bundle contiene questi %d riferimenti:"
 
-#: bundle.c:204
+#: bundle.c:224
 msgid "The bundle records a complete history."
 msgstr "Nel bundle è registrata una cronologia completa."
 
-#: bundle.c:206
+#: bundle.c:226
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "Il bundle richiede questo riferimento:"
 msgstr[1] "Il bundle richiede questi %d riferimenti:"
 
-#: bundle.c:273
+#: bundle.c:293
 msgid "unable to dup bundle descriptor"
 msgstr "impossibile duplicare il descrittore bundle"
 
-#: bundle.c:280
+#: bundle.c:300
 msgid "Could not spawn pack-objects"
 msgstr "Impossibile avviare pack-objects"
 
-#: bundle.c:291
+#: bundle.c:311
 msgid "pack-objects died"
 msgstr "comando pack-objects morto"
 
-#: bundle.c:333
+#: bundle.c:353
 msgid "rev-list died"
 msgstr "comando rev-list morto"
 
-#: bundle.c:382
+#: bundle.c:402
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "il riferimento '%s' è escluso dalle opzioni di rev-list"
 
-#: bundle.c:461 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
+#: bundle.c:481 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "argomento non riconosciuto: %s"
 
-#: bundle.c:469
+#: bundle.c:489
 msgid "Refusing to create empty bundle."
 msgstr "Mi rifiuto di creare un bundle vuoto."
 
-#: bundle.c:479
+#: bundle.c:499
 #, c-format
 msgid "cannot create '%s'"
 msgstr "impossibile creare '%s'"
 
-#: bundle.c:504
+#: bundle.c:524
 msgid "index-pack died"
 msgstr "comando index-pack morto"
 
@@ -2082,271 +2124,261 @@
 msgid "invalid color value: %.*s"
 msgstr "valore colore non valido: %.*s"
 
-#: commit-graph.c:183
+#: commit-graph.c:238
 msgid "commit-graph file is too small"
 msgstr "il file grafo dei commit %s è troppo piccolo"
 
-#: commit-graph.c:248
+#: commit-graph.c:303
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "la firma del grafo dei commit %X non corrisponde alla firma %X"
 
-#: commit-graph.c:255
+#: commit-graph.c:310
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "la versione del grafo dei commit %X non corrisponde alla versione %X"
 
-#: commit-graph.c:262
+#: commit-graph.c:317
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr ""
 "la versione hash del grafo dei commit %X non corrisponde alla versione %X"
 
-#: commit-graph.c:284
+#: commit-graph.c:339
 msgid "commit-graph chunk lookup table entry missing; file may be incomplete"
 msgstr ""
 "voce blocco grafo dei commit mancante nella tabella di ricerca; il file "
 "potrebbe non essere completo"
 
-#: commit-graph.c:294
+#: commit-graph.c:349
 #, c-format
 msgid "commit-graph improper chunk offset %08x%08x"
 msgstr "offset blocco grafo dei commit improprio %08x%08x"
 
-#: commit-graph.c:362
+#: commit-graph.c:417
 #, c-format
 msgid "commit-graph chunk id %08x appears multiple times"
 msgstr "l'ID del blocco grafo dei commit %08x compare più volte"
 
-#: commit-graph.c:436
+#: commit-graph.c:491
 msgid "commit-graph has no base graphs chunk"
 msgstr "il grafo dei commit non ha un blocco grafi di base"
 
-#: commit-graph.c:446
+#: commit-graph.c:501
 msgid "commit-graph chain does not match"
 msgstr "la catena del grafo dei commit non corrisponde"
 
-#: commit-graph.c:494
+#: commit-graph.c:549
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "catena grafo dei commit non valida: la riga '%s' non è un hash"
 
-#: commit-graph.c:518
+#: commit-graph.c:573
 msgid "unable to find all commit-graph files"
 msgstr "impossibile trovare tutti i file grafo dei commit"
 
-#: commit-graph.c:651 commit-graph.c:711
+#: commit-graph.c:706 commit-graph.c:770
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr ""
 "posizione commit non valida. Il grafo dei commit è probabilmente corrotto"
 
-#: commit-graph.c:672
+#: commit-graph.c:727
 #, c-format
 msgid "could not find commit %s"
 msgstr "impossibile trovare il commit %s"
 
-#: commit-graph.c:948 builtin/am.c:1292
+#: commit-graph.c:1009 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "impossibile analizzare il commit %s"
 
-#: commit-graph.c:1096
+#: commit-graph.c:1157
 msgid "Writing changed paths Bloom filters index"
 msgstr ""
 "Scrittura dell'indice dei filtri di Bloom per i percorsi modificati in corso"
 
-#: commit-graph.c:1121
+#: commit-graph.c:1182
 msgid "Writing changed paths Bloom filters data"
 msgstr ""
 "Scrittura dei dati dei filtri di Bloom per i percorsi modificati in corso"
 
-#: commit-graph.c:1160 builtin/pack-objects.c:2783
+#: commit-graph.c:1221 builtin/pack-objects.c:2832
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "impossibile recuperare il tipo dell'oggetto %s"
 
-#: commit-graph.c:1196
+#: commit-graph.c:1257
 msgid "Loading known commits in commit graph"
 msgstr "Caricamento commit noti nel grafo dei commit in corso"
 
-#: commit-graph.c:1213
+#: commit-graph.c:1274
 msgid "Expanding reachable commits in commit graph"
 msgstr "Espansione dei commit raggiungibili nel grafo dei commit in corso"
 
-#: commit-graph.c:1233
+#: commit-graph.c:1294
 msgid "Clearing commit marks in commit graph"
 msgstr "Rimozione dei contrassegni commit nel grafo dei commit in corso"
 
-#: commit-graph.c:1252
+#: commit-graph.c:1313
 msgid "Computing commit graph generation numbers"
 msgstr "Calcolo numeri generazione del grafo dei commit in corso"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1367
 msgid "Computing commit changed paths Bloom filters"
 msgstr ""
 "Calcolo dei filtri di Bloom per i percorsi modificati nei commit in corso"
 
-#: commit-graph.c:1359
+#: commit-graph.c:1423
+msgid "Collecting referenced commits"
+msgstr "Raccolta dei commit referenziati in corso"
+
+#: commit-graph.c:1447
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "Ricerca dei commit per il grafo dei commit in %d pack in corso"
 msgstr[1] "Ricerca dei commit per il grafo dei commit in %d pack in corso"
 
-#: commit-graph.c:1372
+#: commit-graph.c:1460
 #, c-format
 msgid "error adding pack %s"
 msgstr "errore durante l'aggiunta del pack %s"
 
-#: commit-graph.c:1376
+#: commit-graph.c:1464
 #, c-format
 msgid "error opening index for %s"
 msgstr "errore durante l'apertura dell'indice per %s"
 
-#: commit-graph.c:1405
-#, c-format
-msgid "Finding commits for commit graph from %d ref"
-msgid_plural "Finding commits for commit graph from %d refs"
-msgstr[0] ""
-"Ricerca dei commit per il grafo dei commit da %d riferimento in corso"
-msgstr[1] ""
-"Ricerca dei commit per il grafo dei commit da %d riferimenti in corso"
-
-#: commit-graph.c:1426
-#, c-format
-msgid "invalid commit object id: %s"
-msgstr "ID oggetto commit non valido: %s"
-
-#: commit-graph.c:1442
+#: commit-graph.c:1503
 msgid "Finding commits for commit graph among packed objects"
 msgstr ""
 "Ricerca dei commit per il grafo dei commit fra gli oggetti nei pack in corso"
 
-#: commit-graph.c:1457
+#: commit-graph.c:1518
 msgid "Counting distinct commits in commit graph"
 msgstr "Conteggio commit distinti nel grafo dei commit in corso"
 
-#: commit-graph.c:1489
+#: commit-graph.c:1550
 msgid "Finding extra edges in commit graph"
 msgstr "Ricerca degli archi aggiuntivi nel grafo dei commit in corso"
 
-#: commit-graph.c:1538
+#: commit-graph.c:1599
 msgid "failed to write correct number of base graph ids"
 msgstr "impossibile scrivere il numero esatto degli ID grafo di base"
 
-#: commit-graph.c:1572 midx.c:812
+#: commit-graph.c:1633 midx.c:812
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "impossibile creare le prime directory di %s"
 
-#: commit-graph.c:1585
+#: commit-graph.c:1646
 msgid "unable to create temporary graph layer"
 msgstr "impossibile creare il livello grafico temporaneo"
 
-#: commit-graph.c:1590
+#: commit-graph.c:1651
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "impossibile modificare i permessi condivisi per '%s'"
 
-#: commit-graph.c:1667
+#: commit-graph.c:1728
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "Scrittura in %d passaggio del grafo dei commit in corso"
 msgstr[1] "Scrittura in %d passaggi del grafo dei commit in corso"
 
-#: commit-graph.c:1712
+#: commit-graph.c:1773
 msgid "unable to open commit-graph chain file"
 msgstr "impossibile aprire il file catena grafo dei commit"
 
-#: commit-graph.c:1728
+#: commit-graph.c:1789
 msgid "failed to rename base commit-graph file"
 msgstr "impossibile ridenominare il file di base grafo dei commit"
 
-#: commit-graph.c:1748
+#: commit-graph.c:1809
 msgid "failed to rename temporary commit-graph file"
 msgstr "impossibile ridenominare il file temporaneo grafo dei commit"
 
-#: commit-graph.c:1874
+#: commit-graph.c:1935
 msgid "Scanning merged commits"
 msgstr "Scansione dei commit sottoposti a merge in corso"
 
-#: commit-graph.c:1885
+#: commit-graph.c:1946
 #, c-format
 msgid "unexpected duplicate commit id %s"
 msgstr "ID commit duplicato inatteso: %s"
 
-#: commit-graph.c:1908
+#: commit-graph.c:1969
 msgid "Merging commit-graph"
 msgstr "Merge del grafo dei commit in corso"
 
-#: commit-graph.c:2096
+#: commit-graph.c:2156
 #, c-format
 msgid "the commit graph format cannot write %d commits"
 msgstr ""
 "il formato del grafo dei commit non può essere usato per scrivere %d commit"
 
-#: commit-graph.c:2107
+#: commit-graph.c:2167
 msgid "too many commits to write graph"
 msgstr "troppi commit da scrivere nel grafo"
 
-#: commit-graph.c:2200
+#: commit-graph.c:2260
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 "il file del grafo dei commit ha un checksum non corretto e probabilmente è "
 "corrotto"
 
-#: commit-graph.c:2210
+#: commit-graph.c:2270
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "il grafo dei commit ha un ordine OID non corretto: %s seguito da %s"
 
-#: commit-graph.c:2220 commit-graph.c:2235
+#: commit-graph.c:2280 commit-graph.c:2295
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr ""
 "il grafo dei commit ha un valore fanout non corretto: fanout[%d] = %u != %u"
 
-#: commit-graph.c:2227
+#: commit-graph.c:2287
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "impossibile analizzare il commit %s nel grafo dei commit"
 
-#: commit-graph.c:2245
+#: commit-graph.c:2305
 msgid "Verifying commits in commit graph"
 msgstr "Verifica dei commit nel grafo dei commit in corso"
 
-#: commit-graph.c:2259
+#: commit-graph.c:2320
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "impossibile analizzare il commit %s dal database oggetti per il grafo dei "
 "commit"
 
-#: commit-graph.c:2266
+#: commit-graph.c:2327
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 "l'OID dell'albero radice per il commit %s nel grafo dei commit è %s != %s"
 
-#: commit-graph.c:2276
+#: commit-graph.c:2337
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "l'elenco genitori nel grafo dei commit per il commit %s è troppo lungo"
 
-#: commit-graph.c:2285
+#: commit-graph.c:2346
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "il genitore nel grafo dei commit per %s è %s != %s"
 
-#: commit-graph.c:2298
+#: commit-graph.c:2360
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr ""
 "l'elenco genitori nel grafo dei commit per il commit %s è finito prima del "
 "previsto"
 
-#: commit-graph.c:2303
+#: commit-graph.c:2365
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2354,7 +2386,7 @@
 "il grafo dei commit ha un numero generazione zero per il commit %s ma non "
 "pari a zero per gli altri"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2369
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2362,12 +2394,12 @@
 "il grafo dei commit ha un numero generazione non pari a zero per il commit "
 "%s ma pari a zero per gli altri"
 
-#: commit-graph.c:2322
+#: commit-graph.c:2385
 #, c-format
 msgid "commit-graph generation for commit %s is %u != %u"
 msgstr "il numero generazione nel grafo dei commit per il commit %s è %u != %u"
 
-#: commit-graph.c:2328
+#: commit-graph.c:2391
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
@@ -2404,27 +2436,27 @@
 "Per disabilitare questo messaggio, esegui\n"
 "\"git config advice.graftFileDeprecated false\""
 
-#: commit.c:1168
+#: commit.c:1172
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr "Il commit %s ha una firma GPG non affidabile, presumibilmente di %s."
 
-#: commit.c:1172
+#: commit.c:1176
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "Il commit %s ha una firma GPG non valida presumibilmente di %s."
 
-#: commit.c:1175
+#: commit.c:1179
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Il commit %s non ha una firma GPG."
 
-#: commit.c:1178
+#: commit.c:1182
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "Il commit %s ha una firma GPG valida di %s\n"
 
-#: commit.c:1432
+#: commit.c:1436
 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"
@@ -2619,7 +2651,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "dev'essere nothing, matching, simple, upstream o current"
 
-#: config.c:1533 builtin/pack-objects.c:3542
+#: config.c:1533 builtin/pack-objects.c:3617
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "livello compressione pack %d non valido"
@@ -2773,72 +2805,81 @@
 msgid "server doesn't support '%s'"
 msgstr "il server non supporta '%s'"
 
-#: connect.c:103
+#: connect.c:118
 #, c-format
 msgid "server doesn't support feature '%s'"
 msgstr "il server non supporta la funzionalità '%s'"
 
-#: connect.c:114
+#: connect.c:129
 msgid "expected flush after capabilities"
 msgstr "atteso flush dopo lettura funzionalità"
 
-#: connect.c:233
+#: connect.c:263
 #, c-format
 msgid "ignoring capabilities after first line '%s'"
 msgstr "ignoro le funzionalità dopo la prima riga '%s'"
 
-#: connect.c:252
+#: connect.c:284
 msgid "protocol error: unexpected capabilities^{}"
 msgstr "errore protocollo: capabilities^{} non atteso"
 
-#: connect.c:273
+#: connect.c:306
 #, c-format
 msgid "protocol error: expected shallow sha-1, got '%s'"
 msgstr "errore protocollo: atteso SHA1 shallow, ricevuto '%s'"
 
-#: connect.c:275
+#: connect.c:308
 msgid "repository on the other end cannot be shallow"
 msgstr "il repository della controparte non può essere shallow"
 
-#: connect.c:313
+#: connect.c:347
 msgid "invalid packet"
 msgstr "pacchetto non valido"
 
-#: connect.c:333
+#: connect.c:367
 #, c-format
 msgid "protocol error: unexpected '%s'"
 msgstr "errore protocollo: '%s' non atteso"
 
-#: connect.c:441
+#: connect.c:473
+#, c-format
+msgid "unknown object format '%s' specified by server"
+msgstr "formato oggetto '%s' sconosciuto specificato dal server"
+
+#: connect.c:500
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "risposta ls-refs non valida: %s"
 
-#: connect.c:445
+#: connect.c:504
 msgid "expected flush after ref listing"
 msgstr "atteso flush dopo elenco ref"
 
-#: connect.c:544
+#: connect.c:507
+msgid "expected response end packet after ref listing"
+msgstr "atteso pacchetto fine risposta dopo elenco ref"
+
+#: connect.c:640
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "il protocollo '%s' non è supportato"
 
-#: connect.c:595
+#: connect.c:691
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "impossibile impostare SO_KEEPALIVE sul socket"
 
-#: connect.c:635 connect.c:698
+#: connect.c:731 connect.c:794
 #, c-format
 msgid "Looking up %s ... "
 msgstr "Risoluzione di %s in corso... "
 
-#: connect.c:639
+#: connect.c:735
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "impossibile risolvere %s (porta %s) (%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:643 connect.c:714
+#: connect.c:739 connect.c:810
 #, c-format
 msgid ""
 "done.\n"
@@ -2847,7 +2888,7 @@
 "fatto.\n"
 "Connessione a %s (porta %s) in corso... "
 
-#: connect.c:665 connect.c:742
+#: connect.c:761 connect.c:838
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2857,75 +2898,75 @@
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:671 connect.c:748
+#: connect.c:767 connect.c:844
 msgid "done."
 msgstr "fatto."
 
-#: connect.c:702
+#: connect.c:798
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "impossibile risolvere %s (%s)"
 
-#: connect.c:708
+#: connect.c:804
 #, c-format
 msgid "unknown port %s"
 msgstr "porta %s sconosciuta"
 
-#: connect.c:845 connect.c:1175
+#: connect.c:941 connect.c:1271
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "nome host strano '%s' bloccato"
 
-#: connect.c:847
+#: connect.c:943
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "porta strana '%s' bloccata"
 
-#: connect.c:857
+#: connect.c:953
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "impossibile avviare il proxy %s"
 
-#: connect.c:928
+#: connect.c:1024
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr ""
 "nessun percorso specificato; vedere 'git help pull' per le sintassi URL "
 "valide"
 
-#: connect.c:1123
+#: connect.c:1219
 msgid "ssh variant 'simple' does not support -4"
 msgstr "la variante SSH 'simple' non supporta -4"
 
-#: connect.c:1135
+#: connect.c:1231
 msgid "ssh variant 'simple' does not support -6"
 msgstr "la variante SSH 'simple' non supporta -6"
 
-#: connect.c:1152
+#: connect.c:1248
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "la variante SSH 'simple' non supporta l'impostazione della porta"
 
-#: connect.c:1264
+#: connect.c:1360
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "percorso strano '%s' bloccato"
 
-#: connect.c:1311
+#: connect.c:1407
 msgid "unable to fork"
 msgstr "impossibile eseguire fork"
 
-#: connected.c:107 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:109 builtin/fsck.c:209 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Controllo connessione in corso"
 
-#: connected.c:119
+#: connected.c:121
 msgid "Could not run 'git rev-list'"
 msgstr "Impossibile eseguire 'git-rev-list'"
 
-#: connected.c:139
+#: connected.c:141
 msgid "failed write to rev-list"
 msgstr "scrittura nella rev-list non riuscita"
 
-#: connected.c:146
+#: connected.c:148
 msgid "failed to close rev-list's stdin"
 msgstr "chiusura standard input della rev-list non riuscita"
 
@@ -3194,19 +3235,19 @@
 "Non è un repository Git. Usa --no-index per confrontare due percorsi al di "
 "fuori di un albero di lavoro"
 
-#: diff.c:155
+#: diff.c:156
 #, c-format
 msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
 msgstr ""
 "  Analisi della percentuale di cutoff statistiche directory '%s' non "
 "riuscita\n"
 
-#: diff.c:160
+#: diff.c:161
 #, c-format
 msgid "  Unknown dirstat parameter '%s'\n"
 msgstr "  Parametro statistiche directory '%s' sconosciuto\n"
 
-#: diff.c:296
+#: diff.c:297
 msgid ""
 "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
 "'dimmed-zebra', 'plain'"
@@ -3214,7 +3255,7 @@
 "l'impostazione colore per file spostati deve essere 'no', 'default', "
 "'blocks', 'zebra', 'dimmed-zebra', 'plain'"
 
-#: diff.c:324
+#: diff.c:325
 #, c-format
 msgid ""
 "unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', "
@@ -3224,7 +3265,7 @@
 "space-change', 'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-"
 "change'"
 
-#: diff.c:332
+#: diff.c:333
 msgid ""
 "color-moved-ws: allow-indentation-change cannot be combined with other "
 "whitespace modes"
@@ -3232,13 +3273,13 @@
 "color-moved-ws: allow-indentation-change non può essere combinata con altre "
 "modalità spazi bianchi"
 
-#: diff.c:405
+#: diff.c:410
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
 msgstr ""
 "Valore sconosciuto per la variabile di configurazione 'diff.submodule': '%s'"
 
-#: diff.c:465
+#: diff.c:470
 #, c-format
 msgid ""
 "Found errors in 'diff.dirstat' config variable:\n"
@@ -3247,36 +3288,36 @@
 "Trovati errori nella variabile di configurazione 'diff.dirstat':\n"
 "%s"
 
-#: diff.c:4238
+#: diff.c:4243
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "processo esterno diff morto, mi fermo a %s"
 
-#: diff.c:4583
+#: diff.c:4589
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr ""
 "le opzioni --name-only, --name-status, --check e -s sono mutuamente esclusive"
 
-#: diff.c:4586
+#: diff.c:4592
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "le opzioni -G, -S e --find-object sono mutuamente esclusive"
 
-#: diff.c:4664
+#: diff.c:4670
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow richiede esattamente uno specificatore percorso"
 
-#: diff.c:4712
+#: diff.c:4718
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "valore non valido per --stat: %s"
 
-#: diff.c:4717 diff.c:4722 diff.c:4727 diff.c:4732 diff.c:5245
+#: diff.c:4723 diff.c:4728 diff.c:4733 diff.c:4738 diff.c:5250
 #: parse-options.c:197 parse-options.c:201
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s richiede un valore numerico"
 
-#: diff.c:4749
+#: diff.c:4755
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3285,42 +3326,42 @@
 "Analisi del parametro dell'opzione --dirstat/-X non riuscita:\n"
 "%s"
 
-#: diff.c:4834
+#: diff.c:4840
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "classe modifica '%c' sconosciuta in --diff-filter=%s"
 
-#: diff.c:4858
+#: diff.c:4864
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "valore sconosciuto dopo ws-error-highlight=%.*s"
 
-#: diff.c:4872
+#: diff.c:4878
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "impossibile risolvere '%s'"
 
-#: diff.c:4922 diff.c:4928
+#: diff.c:4928 diff.c:4934
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s richiede il formato <n>/<m>"
 
-#: diff.c:4940
+#: diff.c:4946
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s richiede un carattere, ricevuto '%s'"
 
-#: diff.c:4961
+#: diff.c:4967
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "argomento --color-moved errato: %s"
 
-#: diff.c:4980
+#: diff.c:4986
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "modo non valido '%s' in --color-moved-ws"
 
-#: diff.c:5020
+#: diff.c:5026
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3328,151 +3369,151 @@
 "l'opzione diff-algorithm accetta i valori \"myers\", \"minimal\", \"patience"
 "\" e \"histogram\""
 
-#: diff.c:5056 diff.c:5076
+#: diff.c:5062 diff.c:5082
 #, c-format
 msgid "invalid argument to %s"
 msgstr "argomento non valido per %s"
 
-#: diff.c:5214
+#: diff.c:5219
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "analisi del parametro dell'opzione --submodule non riuscita: '%s'"
 
-#: diff.c:5270
+#: diff.c:5275
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "argomento --word-diff errato: %s"
 
-#: diff.c:5293
+#: diff.c:5298
 msgid "Diff output format options"
 msgstr "Opzioni formato output diff"
 
-#: diff.c:5295 diff.c:5301
+#: diff.c:5300 diff.c:5306
 msgid "generate patch"
 msgstr "genera patch"
 
-#: diff.c:5298 builtin/log.c:177
+#: diff.c:5303 builtin/log.c:177
 msgid "suppress diff output"
 msgstr "non visualizzare l'output del diff"
 
-#: diff.c:5303 diff.c:5417 diff.c:5424
+#: diff.c:5308 diff.c:5422 diff.c:5429
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5304 diff.c:5307
+#: diff.c:5309 diff.c:5312
 msgid "generate diffs with <n> lines context"
 msgstr "genera diff con <n> righe di contesto"
 
-#: diff.c:5309
+#: diff.c:5314
 msgid "generate the diff in raw format"
 msgstr "genera il diff in formato grezzo"
 
-#: diff.c:5312
+#: diff.c:5317
 msgid "synonym for '-p --raw'"
 msgstr "sinonimo di '-p --raw'"
 
-#: diff.c:5316
+#: diff.c:5321
 msgid "synonym for '-p --stat'"
 msgstr "sinonimo di '-p --stat'"
 
-#: diff.c:5320
+#: diff.c:5325
 msgid "machine friendly --stat"
 msgstr "--stat leggibile da una macchina"
 
-#: diff.c:5323
+#: diff.c:5328
 msgid "output only the last line of --stat"
 msgstr "emetti in output solo l'ultima riga di --stat"
 
-#: diff.c:5325 diff.c:5333
+#: diff.c:5330 diff.c:5338
 msgid "<param1,param2>..."
 msgstr "<parametro1,parametro2>..."
 
-#: diff.c:5326
+#: diff.c:5331
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr ""
 "emetti in output la distribuzione del numero di modifiche relativo a ogni "
 "sottodirectory"
 
-#: diff.c:5330
+#: diff.c:5335
 msgid "synonym for --dirstat=cumulative"
 msgstr "sinonimo di --dirstat=cumulative"
 
-#: diff.c:5334
+#: diff.c:5339
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "sinonimo di --dirstat=files,parametro1,parametro2..."
 
-#: diff.c:5338
+#: diff.c:5343
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr ""
 "avvisa se le modifiche introducono marcatori conflitto o errori spazi bianchi"
 
-#: diff.c:5341
+#: diff.c:5346
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr ""
 "riassunto conciso (ad es. elementi creati, ridenominati e modifiche modi)"
 
-#: diff.c:5344
+#: diff.c:5349
 msgid "show only names of changed files"
 msgstr "visualizza solo i nomi dei file modificati"
 
-#: diff.c:5347
+#: diff.c:5352
 msgid "show only names and status of changed files"
 msgstr "visualizza solo i nomi e lo stato dei file modificati"
 
-#: diff.c:5349
+#: diff.c:5354
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<ampiezza>[,<ampiezza nome>[,<numero>]]"
 
-#: diff.c:5350
+#: diff.c:5355
 msgid "generate diffstat"
 msgstr "genera diffstat"
 
-#: diff.c:5352 diff.c:5355 diff.c:5358
+#: diff.c:5357 diff.c:5360 diff.c:5363
 msgid "<width>"
 msgstr "<ampiezza>"
 
-#: diff.c:5353
+#: diff.c:5358
 msgid "generate diffstat with a given width"
 msgstr "genera il diffstat con un'ampiezza specificata"
 
-#: diff.c:5356
+#: diff.c:5361
 msgid "generate diffstat with a given name width"
 msgstr "genera il diffstat con un'ampiezza nomi specificata"
 
-#: diff.c:5359
+#: diff.c:5364
 msgid "generate diffstat with a given graph width"
 msgstr "genera il diffstat con un'ampiezza grafo specificata"
 
-#: diff.c:5361
+#: diff.c:5366
 msgid "<count>"
 msgstr "<numero>"
 
-#: diff.c:5362
+#: diff.c:5367
 msgid "generate diffstat with limited lines"
 msgstr "genera il diffstat con righe limitate"
 
-#: diff.c:5365
+#: diff.c:5370
 msgid "generate compact summary in diffstat"
 msgstr "genera riassunto conciso nel diffstat"
 
-#: diff.c:5368
+#: diff.c:5373
 msgid "output a binary diff that can be applied"
 msgstr "stampa in output un diff binario che può essere applicato"
 
-#: diff.c:5371
+#: diff.c:5376
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr "visualizza i nomi oggetto pre e post immagine nelle righe \"indice\""
 
-#: diff.c:5373
+#: diff.c:5378
 msgid "show colored diff"
 msgstr "visualizza diff colorato"
 
-#: diff.c:5374
+#: diff.c:5379
 msgid "<kind>"
 msgstr "<tipo>"
 
-#: diff.c:5375
+#: diff.c:5380
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3480,7 +3521,7 @@
 "evidenzia gli errori di spazi bianchi nelle righe 'contesto', 'vecchie' o "
 "'nuove' nel diff"
 
-#: diff.c:5378
+#: diff.c:5383
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3488,91 +3529,91 @@
 "non rimuovere i nomi percorso e usare caratteri NUL come terminatori campo "
 "in --raw o --numstat"
 
-#: diff.c:5381 diff.c:5384 diff.c:5387 diff.c:5493
+#: diff.c:5386 diff.c:5389 diff.c:5392 diff.c:5498
 msgid "<prefix>"
 msgstr "<prefisso>"
 
-#: diff.c:5382
+#: diff.c:5387
 msgid "show the given source prefix instead of \"a/\""
 msgstr "visualizza il prefisso sorgente specificato invece di \"a/\""
 
-#: diff.c:5385
+#: diff.c:5390
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "visualizza il prefisso destinazione specificato invece di \"b/\""
 
-#: diff.c:5388
+#: diff.c:5393
 msgid "prepend an additional prefix to every line of output"
 msgstr "anteponi un prefisso aggiuntivo ad ogni riga dell'output"
 
-#: diff.c:5391
+#: diff.c:5396
 msgid "do not show any source or destination prefix"
 msgstr "non visualizzare alcun prefisso sorgente o destinazione"
 
-#: diff.c:5394
+#: diff.c:5399
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr ""
 "visualizza il contesto tra gli hunk del diff fino al numero di righe "
 "specificato"
 
-#: diff.c:5398 diff.c:5403 diff.c:5408
+#: diff.c:5403 diff.c:5408 diff.c:5413
 msgid "<char>"
 msgstr "<carattere>"
 
-#: diff.c:5399
+#: diff.c:5404
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "specifica il carattere che indica una nuova riga al posto di '+'"
 
-#: diff.c:5404
+#: diff.c:5409
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "specifica il carattere che indica una vecchia riga al posto di '-'"
 
-#: diff.c:5409
+#: diff.c:5414
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "specifica il carattere che indica un contesto al posto di ' '"
 
-#: diff.c:5412
+#: diff.c:5417
 msgid "Diff rename options"
 msgstr "Opzioni rinominazione diff"
 
-#: diff.c:5413
+#: diff.c:5418
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5414
+#: diff.c:5419
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr ""
 "spezza modifiche di riscrittura completa in coppie eliminazione/creazione"
 
-#: diff.c:5418
+#: diff.c:5423
 msgid "detect renames"
 msgstr "rileva le ridenominazioni"
 
-#: diff.c:5422
+#: diff.c:5427
 msgid "omit the preimage for deletes"
 msgstr "ometti la preimmagine per le eliminazioni"
 
-#: diff.c:5425
+#: diff.c:5430
 msgid "detect copies"
 msgstr "rileva le copie"
 
-#: diff.c:5429
+#: diff.c:5434
 msgid "use unmodified files as source to find copies"
 msgstr "usa file non modificati come sorgente per trovare copie"
 
-#: diff.c:5431
+#: diff.c:5436
 msgid "disable rename detection"
 msgstr "disabilita rilevamento ridenominazione"
 
-#: diff.c:5434
+#: diff.c:5439
 msgid "use empty blobs as rename source"
 msgstr "usa blob vuoti come sorgente ridenominazione"
 
-#: diff.c:5436
+#: diff.c:5441
 msgid "continue listing the history of a file beyond renames"
 msgstr ""
 "continua a elencare la cronologia di un file al di là delle ridenominazioni"
 
-#: diff.c:5439
+#: diff.c:5444
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3580,159 +3621,159 @@
 "impedisci il rilevamento ridenominazione/copia se il numero delle "
 "destinazioni ridenominazione/copia eccede il limite specificato"
 
-#: diff.c:5441
+#: diff.c:5446
 msgid "Diff algorithm options"
 msgstr "Opzioni algoritmo diff"
 
-#: diff.c:5443
+#: diff.c:5448
 msgid "produce the smallest possible diff"
 msgstr "produci il diff più piccolo possibile"
 
-#: diff.c:5446
+#: diff.c:5451
 msgid "ignore whitespace when comparing lines"
 msgstr "ignora gli spazi bianchi durante il confronto delle righe"
 
-#: diff.c:5449
+#: diff.c:5454
 msgid "ignore changes in amount of whitespace"
 msgstr "ignora le modifiche al numero degli spazi bianchi"
 
-#: diff.c:5452
+#: diff.c:5457
 msgid "ignore changes in whitespace at EOL"
 msgstr "ignora modifiche agli spazi bianchi a fine riga"
 
-#: diff.c:5455
+#: diff.c:5460
 msgid "ignore carrier-return at the end of line"
 msgstr "ignora carattere ritorno a capo a fine riga"
 
-#: diff.c:5458
+#: diff.c:5463
 msgid "ignore changes whose lines are all blank"
 msgstr "ignora modifiche che riguardano solo righe vuote"
 
-#: diff.c:5461
+#: diff.c:5466
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr ""
 "euristica per spostare i limiti degli hunk nel diff per una lettura agevole"
 
-#: diff.c:5464
+#: diff.c:5469
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "genera il diff usando l'algoritmo \"patience diff\""
 
-#: diff.c:5468
+#: diff.c:5473
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "genera il diff usando l'algoritmo \"histogram diff\""
 
-#: diff.c:5470
+#: diff.c:5475
 msgid "<algorithm>"
 msgstr "<algoritmo>"
 
-#: diff.c:5471
+#: diff.c:5476
 msgid "choose a diff algorithm"
 msgstr "seleziona un algoritmo diff"
 
-#: diff.c:5473
+#: diff.c:5478
 msgid "<text>"
 msgstr "<testo>"
 
-#: diff.c:5474
+#: diff.c:5479
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "genera il diff usando l'algoritmo \"anchored diff\""
 
-#: diff.c:5476 diff.c:5485 diff.c:5488
+#: diff.c:5481 diff.c:5490 diff.c:5493
 msgid "<mode>"
 msgstr "<modalità>"
 
-#: diff.c:5477
+#: diff.c:5482
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr ""
 "visualizza il diff parola per parola usando <modalità> per delimitare le "
 "parole modificate"
 
-#: diff.c:5479 diff.c:5482 diff.c:5527
+#: diff.c:5484 diff.c:5487 diff.c:5532
 msgid "<regex>"
 msgstr "<espressione regolare>"
 
-#: diff.c:5480
+#: diff.c:5485
 msgid "use <regex> to decide what a word is"
 msgstr "usa <espressione regolare> per decidere cosa costituisce una parola"
 
-#: diff.c:5483
+#: diff.c:5488
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr ""
 "equivalente di --word-diff=color --word-diff-regex=<espressione regolare>"
 
-#: diff.c:5486
+#: diff.c:5491
 msgid "moved lines of code are colored differently"
 msgstr "le righe di codice spostate sono colorate in modo diverso"
 
-#: diff.c:5489
+#: diff.c:5494
 msgid "how white spaces are ignored in --color-moved"
 msgstr "modo in cui sono ignorati gli spazi bianchi in --color-moved"
 
-#: diff.c:5492
+#: diff.c:5497
 msgid "Other diff options"
 msgstr "Altre opzioni diff"
 
-#: diff.c:5494
+#: diff.c:5499
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr ""
 "se eseguito da una sottodirectory, escludi le modifiche esterne ad essa e "
 "visualizza i percorsi relativi"
 
-#: diff.c:5498
+#: diff.c:5503
 msgid "treat all files as text"
 msgstr "tratta tutti i file come se fossero di testo"
 
-#: diff.c:5500
+#: diff.c:5505
 msgid "swap two inputs, reverse the diff"
 msgstr "scambia i due input, genera un diff al contrario"
 
-#: diff.c:5502
+#: diff.c:5507
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "esci con codice 1 se ci sono differenze, con 0 altrimenti"
 
-#: diff.c:5504
+#: diff.c:5509
 msgid "disable all output of the program"
 msgstr "disabilita l'intero output del programma"
 
-#: diff.c:5506
+#: diff.c:5511
 msgid "allow an external diff helper to be executed"
 msgstr "consenti l'esecuzione di un helper diff esterno"
 
-#: diff.c:5508
+#: diff.c:5513
 msgid "run external text conversion filters when comparing binary files"
 msgstr ""
 "esegui filtri di conversione in testo esterni quando si confrontano file "
 "binari"
 
-#: diff.c:5510
+#: diff.c:5515
 msgid "<when>"
 msgstr "<quando>"
 
-#: diff.c:5511
+#: diff.c:5516
 msgid "ignore changes to submodules in the diff generation"
 msgstr "ignora le modifiche ai sottomoduli durante la generazione del diff"
 
-#: diff.c:5514
+#: diff.c:5519
 msgid "<format>"
 msgstr "<formato>"
 
-#: diff.c:5515
+#: diff.c:5520
 msgid "specify how differences in submodules are shown"
 msgstr "specifica come verranno visualizzate le differenze nei sottomoduli"
 
-#: diff.c:5519
+#: diff.c:5524
 msgid "hide 'git add -N' entries from the index"
 msgstr "nascondi le voci 'git add -N' nell'indice"
 
-#: diff.c:5522
+#: diff.c:5527
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "tratta le voci 'git add -N' come reali nell'indice"
 
-#: diff.c:5524
+#: diff.c:5529
 msgid "<string>"
 msgstr "<stringa>"
 
-#: diff.c:5525
+#: diff.c:5530
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
@@ -3740,7 +3781,7 @@
 "cerca differenze che modificano il numero di occorrenze della stringa "
 "specificata"
 
-#: diff.c:5528
+#: diff.c:5533
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3748,24 +3789,24 @@
 "cerca differenze che modificano il numero di occorrenze dell'espressione "
 "regolare specificata"
 
-#: diff.c:5531
+#: diff.c:5536
 msgid "show all changes in the changeset with -S or -G"
 msgstr "visualizza tutte le modifiche nel changeset con -S o -G"
 
-#: diff.c:5534
+#: diff.c:5539
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr ""
 "tratta la <stringa> nell'opzione -S come un'espressione regolare POSIX estesa"
 
-#: diff.c:5537
+#: diff.c:5542
 msgid "control the order in which files appear in the output"
 msgstr "controlla l'ordine con cui i file appariranno nell'output"
 
-#: diff.c:5538
+#: diff.c:5543
 msgid "<object-id>"
 msgstr "<ID oggetto>"
 
-#: diff.c:5539
+#: diff.c:5544
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
@@ -3773,34 +3814,34 @@
 "cerca differenze che modificano il numero di occorrenze dell'oggetto "
 "specificato"
 
-#: diff.c:5541
+#: diff.c:5546
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5542
+#: diff.c:5547
 msgid "select files by diff type"
 msgstr "seleziona file in base al tipo diff"
 
-#: diff.c:5544
+#: diff.c:5549
 msgid "<file>"
 msgstr "<file>"
 
-#: diff.c:5545
+#: diff.c:5550
 msgid "Output to a specific file"
 msgstr "Salva l'output in un file specifico"
 
-#: diff.c:6200
+#: diff.c:6205
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 "il rilevamento ridenominazione non esatta è stato omesso per la presenza di "
 "troppi file."
 
-#: diff.c:6203
+#: diff.c:6208
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 "trovate solo copie dai percorsi modificati per la presenza di troppi file."
 
-#: diff.c:6206
+#: diff.c:6211
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3817,62 +3858,62 @@
 msgid "Performing inexact rename detection"
 msgstr "Rilevamento ridenominazione non esatta in corso"
 
-#: dir.c:555
+#: dir.c:573
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr ""
 "lo specificatore percorso '%s' non corrisponde ad alcun file noto a git"
 
-#: dir.c:695 dir.c:724 dir.c:737
+#: dir.c:713 dir.c:742 dir.c:755
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "pattern non riconosciuto: '%s'"
 
-#: dir.c:754 dir.c:768
+#: dir.c:772 dir.c:786
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "pattern negativo non riconosciuto: '%s'"
 
-#: dir.c:786
+#: dir.c:804
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr ""
 "il file sparse-checkout potrebbe avere dei problemi: il pattern '%s' è "
 "ripetuto"
 
-#: dir.c:796
+#: dir.c:814
 msgid "disabling cone pattern matching"
 msgstr "disabilito il pattern matching di tipo cone"
 
-#: dir.c:1173
+#: dir.c:1191
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "impossibile usare %s come file di esclusione"
 
-#: dir.c:2275
+#: dir.c:2296
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "impossibile aprire la directory '%s'"
 
-#: dir.c:2575
+#: dir.c:2596
 msgid "failed to get kernel name and information"
 msgstr "impossibile ottenere il nome e le informazioni sul kernel"
 
-#: dir.c:2699
+#: dir.c:2720
 msgid "untracked cache is disabled on this system or location"
 msgstr "la cache non tracciata è disabilitata su questo sistema o percorso"
 
-#: dir.c:3481
+#: dir.c:3502
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "file index corrotto nel repository %s"
 
-#: dir.c:3526 dir.c:3531
+#: dir.c:3547 dir.c:3552
 #, c-format
 msgid "could not create directories for %s"
 msgstr "impossibile creare le directory per %s"
 
-#: dir.c:3560
+#: dir.c:3581
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "impossibile migrare la directory git da '%s' a '%s'"
@@ -3883,11 +3924,11 @@
 msgstr ""
 "suggerimento: In attesa della chiusura del file da parte dell'editor...%c"
 
-#: entry.c:178
+#: entry.c:177
 msgid "Filtering content"
 msgstr "Filtraggio contenuto in corso"
 
-#: entry.c:479
+#: entry.c:478
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "impossibile eseguire stat sul file '%s'"
@@ -3907,230 +3948,248 @@
 msgid "too many args to run %s"
 msgstr "troppi argomenti per eseguire %s"
 
-#: fetch-pack.c:151
+#: fetch-pack.c:152
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: attesa lista shallow"
 
-#: fetch-pack.c:154
+#: fetch-pack.c:155
 msgid "git fetch-pack: expected a flush packet after shallow list"
 msgstr "git fetch-pack: atteso pacchetto flush dopo lista shallow"
 
-#: fetch-pack.c:165
+#: fetch-pack.c:166
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack: attesi ACK/NAK, ricevuto pacchetto flush"
 
-#: fetch-pack.c:185
+#: fetch-pack.c:186
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack: attesi ACK/NAK, ricevuto '%s'"
 
-#: fetch-pack.c:196
+#: fetch-pack.c:197
 msgid "unable to write to remote"
 msgstr "impossibile scrivere sul remoto"
 
-#: fetch-pack.c:258
+#: fetch-pack.c:259
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc richiede multi_ack_detailed"
 
-#: fetch-pack.c:357 fetch-pack.c:1364
+#: fetch-pack.c:358 fetch-pack.c:1408
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "riga shallow non valida: '%s'"
 
-#: fetch-pack.c:363 fetch-pack.c:1370
+#: fetch-pack.c:364 fetch-pack.c:1414
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "riga unshallow non valida: '%s'"
 
-#: fetch-pack.c:365 fetch-pack.c:1372
+#: fetch-pack.c:366 fetch-pack.c:1416
 #, c-format
 msgid "object not found: %s"
 msgstr "oggetto non trovato: %s"
 
-#: fetch-pack.c:368 fetch-pack.c:1375
+#: fetch-pack.c:369 fetch-pack.c:1419
 #, c-format
 msgid "error in object: %s"
 msgstr "errore nell'oggetto: %s"
 
-#: fetch-pack.c:370 fetch-pack.c:1377
+#: fetch-pack.c:371 fetch-pack.c:1421
 #, c-format
 msgid "no shallow found: %s"
 msgstr "nessuno shallow trovato: %s"
 
-#: fetch-pack.c:373 fetch-pack.c:1381
+#: fetch-pack.c:374 fetch-pack.c:1425
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "attesi shallow/unshallow, ricevuto %s"
 
-#: fetch-pack.c:415
+#: fetch-pack.c:416
 #, c-format
 msgid "got %s %d %s"
 msgstr "ricevuto %s %d %s"
 
-#: fetch-pack.c:432
+#: fetch-pack.c:433
 #, c-format
 msgid "invalid commit %s"
 msgstr "commit non valido: %s"
 
-#: fetch-pack.c:463
+#: fetch-pack.c:464
 msgid "giving up"
 msgstr "smetto di provare"
 
-#: fetch-pack.c:476 progress.c:336
+#: fetch-pack.c:477 progress.c:336
 msgid "done"
 msgstr "fatto"
 
-#: fetch-pack.c:488
+#: fetch-pack.c:489
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "ricevuto %s (%d) %s"
 
-#: fetch-pack.c:534
+#: fetch-pack.c:535
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Contrassegno %s come completo"
 
-#: fetch-pack.c:755
+#: fetch-pack.c:756
 #, c-format
 msgid "already have %s (%s)"
 msgstr "ho già %s (%s)"
 
-#: fetch-pack.c:819
+#: fetch-pack.c:821
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr ""
 "fetch-pack: impossibile eseguire il fork del demultiplexer della banda "
 "laterlae"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:829
 msgid "protocol error: bad pack header"
 msgstr "errore protocollo: intestazione pack non valida"
 
-#: fetch-pack.c:901
+#: fetch-pack.c:910
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: impossibile eseguire il fork di %s"
 
-#: fetch-pack.c:917
+#: fetch-pack.c:927
 #, c-format
 msgid "%s failed"
 msgstr "%s non riuscito"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:929
 msgid "error in sideband demultiplexer"
 msgstr "errore nel demultiplexer della banda laterale"
 
-#: fetch-pack.c:966
+#: fetch-pack.c:976
 #, c-format
 msgid "Server version is %.*s"
 msgstr "La versione del server è %.*s"
 
-#: fetch-pack.c:971 fetch-pack.c:977 fetch-pack.c:980 fetch-pack.c:986
-#: fetch-pack.c:990 fetch-pack.c:994 fetch-pack.c:998 fetch-pack.c:1002
-#: fetch-pack.c:1006 fetch-pack.c:1010 fetch-pack.c:1014 fetch-pack.c:1018
-#: fetch-pack.c:1024 fetch-pack.c:1030 fetch-pack.c:1035 fetch-pack.c:1040
+#: fetch-pack.c:981 fetch-pack.c:987 fetch-pack.c:990 fetch-pack.c:996
+#: fetch-pack.c:1000 fetch-pack.c:1004 fetch-pack.c:1008 fetch-pack.c:1012
+#: fetch-pack.c:1016 fetch-pack.c:1020 fetch-pack.c:1024 fetch-pack.c:1028
+#: fetch-pack.c:1034 fetch-pack.c:1040 fetch-pack.c:1045 fetch-pack.c:1050
 #, c-format
 msgid "Server supports %s"
 msgstr "Il server supporta %s"
 
-#: fetch-pack.c:973
+#: fetch-pack.c:983
 msgid "Server does not support shallow clients"
 msgstr "Il server non supporta client shallow"
 
-#: fetch-pack.c:1033
+#: fetch-pack.c:1043
 msgid "Server does not support --shallow-since"
 msgstr "Il server non supporta --shallow-since"
 
-#: fetch-pack.c:1038
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-exclude"
 msgstr "Il server non supporta --shallow-exclude"
 
-#: fetch-pack.c:1042
+#: fetch-pack.c:1052
 msgid "Server does not support --deepen"
 msgstr "Il server non supporta --deepen"
 
-#: fetch-pack.c:1059
+#: fetch-pack.c:1054
+msgid "Server does not support this repository's object format"
+msgstr "Il server non supporta il formato oggetti di questo repository"
+
+#: fetch-pack.c:1071
 msgid "no common commits"
 msgstr "nessun commit in comune"
 
-#: fetch-pack.c:1071 fetch-pack.c:1563
+#: fetch-pack.c:1083 fetch-pack.c:1639
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: recupero non riuscito."
 
 #: fetch-pack.c:1211
+#, c-format
+msgid "mismatched algorithms: client %s; server %s"
+msgstr "algoritmi non corrispondenti: client %s; server %s"
+
+#: fetch-pack.c:1215
+#, c-format
+msgid "the server does not support algorithm '%s'"
+msgstr "il server non supporta l'algoritmo '%s'"
+
+#: fetch-pack.c:1235
 msgid "Server does not support shallow requests"
 msgstr "Il server non supporta le richieste shallow"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1242
 msgid "Server supports filter"
 msgstr "Il server supporta filter"
 
-#: fetch-pack.c:1242
+#: fetch-pack.c:1286
 msgid "unable to write request to remote"
 msgstr "impossibile scrivere la richiesta sul remoto"
 
-#: fetch-pack.c:1260
+#: fetch-pack.c:1304
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "errore durante la lettura dell'intestazione di sezione '%s'"
 
-#: fetch-pack.c:1266
+#: fetch-pack.c:1310
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "atteso '%s', ricevuto '%s'"
 
-#: fetch-pack.c:1327
+#: fetch-pack.c:1371
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "riga di conferma inattesa: '%s'"
 
-#: fetch-pack.c:1332
+#: fetch-pack.c:1376
 #, c-format
 msgid "error processing acks: %d"
 msgstr "errore durante l'elaborazione degli ack: %d"
 
-#: fetch-pack.c:1342
+#: fetch-pack.c:1386
 msgid "expected packfile to be sent after 'ready'"
 msgstr "ci si attendeva che il packfile fosse inviato dopo 'ready'"
 
-#: fetch-pack.c:1344
+#: fetch-pack.c:1388
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr ""
 "ci si attendeva che nessun'altra sezione fosse inviata in assenza di 'ready'"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1430
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "errore durante l'elaborazione delle informazioni shallow: %d"
 
-#: fetch-pack.c:1433
+#: fetch-pack.c:1477
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "atteso wanted-ref, ricevuto '%s'"
 
-#: fetch-pack.c:1438
+#: fetch-pack.c:1482
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "wanted-ref inatteso: '%s'"
 
-#: fetch-pack.c:1443
+#: fetch-pack.c:1487
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "errore durante l'elaborazione dei riferimenti desiderati: %d"
 
-#: fetch-pack.c:1789
+#: fetch-pack.c:1517
+msgid "git fetch-pack: expected response end packet"
+msgstr "git fetch-pack: atteso pacchetto fine risposta"
+
+#: fetch-pack.c:1921
 msgid "no matching remote head"
 msgstr "nessun head remoto corrispondente"
 
-#: fetch-pack.c:1812 builtin/clone.c:692
+#: fetch-pack.c:1944 builtin/clone.c:692
 msgid "remote did not send all necessary objects"
 msgstr "il remoto non ha inviato tutti gli oggetti necessari"
 
-#: fetch-pack.c:1839
+#: fetch-pack.c:1971
 #, c-format
 msgid "no such remote ref %s"
 msgstr "riferimento remoto non esistente: %s"
 
-#: fetch-pack.c:1842
+#: fetch-pack.c:1974
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Il server non consente richieste per l'oggetto non pubblicizzato %s"
@@ -4166,7 +4225,7 @@
 msgid "'%s': unable to read %s"
 msgstr "'%s': impossibile leggere %s"
 
-#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:82
+#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:89
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
@@ -4311,16 +4370,16 @@
 "\n"
 "I comandi maggiormente simili sono"
 
-#: help.c:653
+#: help.c:654
 msgid "git version [<options>]"
 msgstr "git version [<opzioni>]"
 
-#: help.c:708
+#: help.c:709
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:712
+#: help.c:713
 msgid ""
 "\n"
 "Did you mean this?"
@@ -4423,6 +4482,11 @@
 msgid "multiple filter-specs cannot be combined"
 msgstr "non è possibile combinare più specificatori filtro"
 
+#: list-objects-filter-options.c:330
+msgid "unable to upgrade repository format to support partial clone"
+msgstr ""
+"impossibile aggiornare il formato repository per supportare il clone parziale"
+
 #: list-objects-filter.c:492
 #, c-format
 msgid "unable to access sparse blob in '%s'"
@@ -4793,7 +4857,7 @@
 msgid "Skipped %s (merged same as existing)"
 msgstr "Omesso %s (elemento sottoposto a merge uguale a quello esistente)"
 
-#: merge-recursive.c:3101 git-submodule.sh:985
+#: merge-recursive.c:3101 git-submodule.sh:959
 msgid "submodule"
 msgstr "sottomodulo"
 
@@ -4921,7 +4985,7 @@
 msgstr "lettura della cache non riuscita"
 
 #: merge.c:108 rerere.c:720 builtin/am.c:1878 builtin/am.c:1912
-#: builtin/checkout.c:559 builtin/checkout.c:824 builtin/clone.c:816
+#: builtin/checkout.c:559 builtin/checkout.c:822 builtin/clone.c:816
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "impossibile scrivere il nuovo file index"
@@ -5171,22 +5235,22 @@
 msgid "hash mismatch %s"
 msgstr "hash non corrispondente: %s"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2135
+#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2184
 #, c-format
 msgid "unable to get size of %s"
 msgstr "impossibile recuperare le dimensioni di %s"
 
-#: packfile.c:629
+#: packfile.c:630
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "offset collocato prima della fine del packfile (.idx corrotto?)"
 
-#: packfile.c:1899
+#: packfile.c:1900
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr ""
 "offset collocato prima dell'inizio dell'indice pack per %s (indice corrotto?)"
 
-#: packfile.c:1903
+#: packfile.c:1904
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
@@ -5396,46 +5460,50 @@
 msgstr "impossibile scrivere il pacchetto delim"
 
 #: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "impossibile scrivere il pacchetto separatore senza stato"
+
+#: pkt-line.c:113
 msgid "flush packet write failed"
 msgstr "scrittura con flush pacchetto non riuscita"
 
-#: pkt-line.c:146 pkt-line.c:232
+#: pkt-line.c:153 pkt-line.c:239
 msgid "protocol error: impossibly long line"
 msgstr "errore protocollo: riga impossibilmente lunga"
 
-#: pkt-line.c:162 pkt-line.c:164
+#: pkt-line.c:169 pkt-line.c:171
 msgid "packet write with format failed"
 msgstr "scrittura pacchetto con formato non riuscita"
 
-#: pkt-line.c:196
+#: pkt-line.c:203
 msgid "packet write failed - data exceeds max packet size"
 msgstr ""
 "scrittura pacchetto non riuscita - i dati sono più della dimensione massima "
 "pacchetto"
 
-#: pkt-line.c:203 pkt-line.c:210
+#: pkt-line.c:210 pkt-line.c:217
 msgid "packet write failed"
 msgstr "scrittura pacchetto non riuscita"
 
-#: pkt-line.c:295
+#: pkt-line.c:302
 msgid "read error"
 msgstr "errore di lettura"
 
-#: pkt-line.c:303
+#: pkt-line.c:310
 msgid "the remote end hung up unexpectedly"
 msgstr "l'interlocutore remoto ha chiuso inaspettatamente la connessione"
 
-#: pkt-line.c:331
+#: pkt-line.c:338
 #, c-format
 msgid "protocol error: bad line length character: %.4s"
 msgstr "errore protocollo: carattere lunghezza riga non valido: %.4s"
 
-#: pkt-line.c:341 pkt-line.c:346
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
 msgid "protocol error: bad line length %d"
 msgstr "errore protocollo: lunghezza riga non valida: %d"
 
-#: pkt-line.c:362
+#: pkt-line.c:373
 #, c-format
 msgid "remote error: %s"
 msgstr "errore remoto: %s"
@@ -5615,7 +5683,7 @@
 
 #: read-cache.c:1983 read-cache.c:2271 rerere.c:565 rerere.c:599 rerere.c:1111
 #: submodule.c:1619 builtin/add.c:532 builtin/check-ignore.c:181
-#: builtin/checkout.c:488 builtin/checkout.c:676 builtin/clean.c:961
+#: builtin/checkout.c:488 builtin/checkout.c:674 builtin/clean.c:991
 #: builtin/commit.c:364 builtin/diff-tree.c:121 builtin/grep.c:507
 #: builtin/mv.c:145 builtin/reset.c:247 builtin/rm.c:290
 #: builtin/submodule--helper.c:332
@@ -5672,7 +5740,7 @@
 msgid "broken index, expect %s in %s, got %s"
 msgstr "indice corrotto, atteso %s in %s, presente %s"
 
-#: read-cache.c:3026 strbuf.c:1176 wrapper.c:622 builtin/merge.c:1130
+#: read-cache.c:3026 strbuf.c:1171 wrapper.c:630 builtin/merge.c:1130
 #, c-format
 msgid "could not close '%s'"
 msgstr "impossibile chiudere '%s'"
@@ -5860,7 +5928,7 @@
 msgid "could not read '%s'."
 msgstr "impossibile leggere '%s'."
 
-#: ref-filter.c:42 wt-status.c:1936
+#: ref-filter.c:42 wt-status.c:1977
 msgid "gone"
 msgstr "sparito"
 
@@ -6086,7 +6154,7 @@
 msgid "ignoring ref with broken name %s"
 msgstr "ignoro il riferimento con il nome malformato %s"
 
-#: ref-filter.c:2095 refs.c:625
+#: ref-filter.c:2095 refs.c:657
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "ignoro il riferimento rotto %s"
@@ -6116,94 +6184,108 @@
 msgid "option `%s' must point to a commit"
 msgstr "l'opzione `%s' deve puntare ad un commit"
 
-#: refs.c:262
+#: refs.c:264
 #, c-format
 msgid "%s does not point to a valid object!"
 msgstr "%s non punta a un oggetto valido!"
 
-#: refs.c:623
+#: refs.c:572
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr "impossibile recuperare `%s`"
+
+#: refs.c:579
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "nome branch non valido: %s = %s"
+
+#: refs.c:655
 #, c-format
 msgid "ignoring dangling symref %s"
 msgstr "ignoro il riferimento simbolico pendente %s"
 
-#: refs.c:760
+#: refs.c:792
 #, c-format
 msgid "could not open '%s' for writing: %s"
 msgstr "impossibile aprire '%s' in scrittura: %s"
 
-#: refs.c:770 refs.c:821
+#: refs.c:802 refs.c:853
 #, c-format
 msgid "could not read ref '%s'"
 msgstr "impossibile leggere il riferimento '%s'"
 
-#: refs.c:776
+#: refs.c:808
 #, c-format
 msgid "ref '%s' already exists"
 msgstr "il riferimento '%s' esiste già"
 
-#: refs.c:781
+#: refs.c:813
 #, c-format
 msgid "unexpected object ID when writing '%s'"
 msgstr "ID oggetto inatteso durante la scrittura di '%s'"
 
-#: refs.c:789 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
-#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1173
-#: wrapper.c:620
+#: refs.c:821 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
+#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1168
+#: wrapper.c:628
 #, c-format
 msgid "could not write to '%s'"
 msgstr "impossibile scrivere su '%s'"
 
-#: refs.c:816 strbuf.c:1171 wrapper.c:188 wrapper.c:358 builtin/am.c:719
+#: refs.c:848 strbuf.c:1166 wrapper.c:196 wrapper.c:366 builtin/am.c:719
 #: builtin/rebase.c:852
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "impossibile aprire '%s' in scrittura"
 
-#: refs.c:823
+#: refs.c:855
 #, c-format
 msgid "unexpected object ID when deleting '%s'"
 msgstr "ID oggetto inatteso durante l'eliminazione di '%s'"
 
-#: refs.c:954
+#: refs.c:986
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr "il registro per il riferimento %s ha delle voci mancanti dopo %s"
 
-#: refs.c:960
+#: refs.c:992
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr "il registro per il riferimento %s è terminato inaspettatamente a %s"
 
-#: refs.c:1019
+#: refs.c:1051
 #, c-format
 msgid "log for %s is empty"
 msgstr "il registro per %s è vuoto"
 
-#: refs.c:1111
+#: refs.c:1143
 #, c-format
 msgid "refusing to update ref with bad name '%s'"
 msgstr "mi rifiuto di aggiornare il riferimento con il nome non valido '%s'"
 
-#: refs.c:1187
+#: refs.c:1219
 #, c-format
 msgid "update_ref failed for ref '%s': %s"
 msgstr "update_ref per il riferimento '%s' non riuscita: %s"
 
-#: refs.c:1979
+#: refs.c:2011
 #, c-format
 msgid "multiple updates for ref '%s' not allowed"
 msgstr "aggiornamenti multipli per il riferimento '%s' non consentiti"
 
-#: refs.c:2011
+#: refs.c:2098
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "aggiornamenti riferimento vietati nell'ambiente quarantena"
 
-#: refs.c:2107 refs.c:2137
+#: refs.c:2109
+msgid "ref updates aborted by hook"
+msgstr "aggiornamento ref interrotto dall'hook"
+
+#: refs.c:2209 refs.c:2239
 #, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr "'%s' esiste già; impossibile creare '%s'"
 
-#: refs.c:2113 refs.c:2148
+#: refs.c:2215 refs.c:2250
 #, c-format
 msgid "cannot process '%s' and '%s' at the same time"
 msgstr "impossibile gestire '%s' e '%s' contemporaneamente"
@@ -6505,7 +6587,7 @@
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr "  (usa \"git pull\" per eseguire il merge del branch remoto nel tuo)\n"
 
-#: remote.c:2233
+#: remote.c:2241
 #, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr "impossibile analizzare il nome oggetto atteso '%s'"
@@ -6632,20 +6714,20 @@
 msgid "failed to find tree of %s"
 msgstr "impossibile trovare l'albero di %s"
 
-#: revision.c:2655
+#: revision.c:2661
 msgid "your current branch appears to be broken"
 msgstr "sembra che il tuo branch corrente sia rotto"
 
-#: revision.c:2658
+#: revision.c:2664
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "il tuo branch corrente '%s' non ha ancora commit"
 
-#: revision.c:2866
+#: revision.c:2873
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent non è compatibile con --bisect"
 
-#: revision.c:2870
+#: revision.c:2877
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr "-L non supporta ancora formati diff oltre a -p e -s"
 
@@ -6687,11 +6769,15 @@
 msgid "failed to sign the push certificate"
 msgstr "firma del certificato per il push non riuscita"
 
-#: send-pack.c:399
+#: send-pack.c:394
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr "il ricevente non supporta l'algoritmo hash di questo repository"
+
+#: send-pack.c:403
 msgid "the receiving end does not support --signed push"
 msgstr "il ricevente non supporta i push --signed"
 
-#: send-pack.c:401
+#: send-pack.c:405
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -6699,11 +6785,11 @@
 "non invio un certificato push perché il ricevente non supporta i push --"
 "signed"
 
-#: send-pack.c:413
+#: send-pack.c:417
 msgid "the receiving end does not support --atomic push"
 msgstr "il ricevente non supporta i push --atomic"
 
-#: send-pack.c:418
+#: send-pack.c:422
 msgid "the receiving end does not support push options"
 msgstr "il ricevente non supporta le opzioni push"
 
@@ -6824,7 +6910,7 @@
 msgid "unable to dequote value of '%s'"
 msgstr "impossibile rimuovere gli apici dal valore di '%s'"
 
-#: sequencer.c:785 wrapper.c:190 wrapper.c:360 builtin/am.c:710
+#: sequencer.c:785 wrapper.c:198 wrapper.c:368 builtin/am.c:710
 #: builtin/am.c:802 builtin/merge.c:1125 builtin/rebase.c:896
 #, c-format
 msgid "could not open '%s' for reading"
@@ -7672,84 +7758,84 @@
 msgid "this operation must be run in a work tree"
 msgstr "quest'operazione deve essere eseguita in un albero di lavoro"
 
-#: setup.c:569
+#: setup.c:604
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Attesa versione repository Git <= %d, trovata %d"
 
-#: setup.c:577
+#: setup.c:612
 msgid "unknown repository extensions found:"
 msgstr "trovate estensioni repository sconosciute:"
 
-#: setup.c:596
+#: setup.c:631
 #, c-format
 msgid "error opening '%s'"
 msgstr "errore durante l'apertura di '%s'"
 
-#: setup.c:598
+#: setup.c:633
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "'%s' troppo grande per essere un file .git"
 
-#: setup.c:600
+#: setup.c:635
 #, c-format
 msgid "error reading %s"
 msgstr "errore durante la lettura di %s"
 
-#: setup.c:602
+#: setup.c:637
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "formato file Git non valido: %s"
 
-#: setup.c:604
+#: setup.c:639
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "nessun percorso presente nel file Git: %s"
 
-#: setup.c:606
+#: setup.c:641
 #, c-format
 msgid "not a git repository: %s"
 msgstr "%s non è un repository Git"
 
-#: setup.c:708
+#: setup.c:743
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' è troppo grande"
 
-#: setup.c:722
+#: setup.c:757
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "'%s' non è un repository Git"
 
-#: setup.c:751 setup.c:753 setup.c:784
+#: setup.c:786 setup.c:788 setup.c:819
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "impossibile modificare la directory corrente in '%s'"
 
-#: setup.c:756 setup.c:812 setup.c:822 setup.c:861 setup.c:869
+#: setup.c:791 setup.c:847 setup.c:857 setup.c:896 setup.c:904
 msgid "cannot come back to cwd"
 msgstr "impossibile tornare alla directory di lavoro corrente"
 
-#: setup.c:883
+#: setup.c:918
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "stat di '%*s%s%s' non riuscito"
 
-#: setup.c:1121
+#: setup.c:1156
 msgid "Unable to read current working directory"
 msgstr "Impossibile leggere la directory di lavoro corrente"
 
-#: setup.c:1130 setup.c:1136
+#: setup.c:1165 setup.c:1171
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "impossibile entrare in '%s'"
 
-#: setup.c:1141
+#: setup.c:1176
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "%s non è un repository Git (né lo è alcuna delle directory genitrici)"
 
-#: setup.c:1147
+#: setup.c:1182
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -7759,7 +7845,7 @@
 "Mi fermo al limite del filesystem (l'opzione GIT_DISCOVERY_ACROSS_FILESYSTEM "
 "non è impostata)."
 
-#: setup.c:1258
+#: setup.c:1293
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -7769,15 +7855,15 @@
 "(0%.3o).\n"
 "Il proprietario dei file deve avere sempre i permessi di lettura e scrittura."
 
-#: setup.c:1304
+#: setup.c:1340
 msgid "open /dev/null or dup failed"
 msgstr "apertura di /dev/null o dup non riuscita"
 
-#: setup.c:1319
+#: setup.c:1355
 msgid "fork failed"
 msgstr "fork non riuscita"
 
-#: setup.c:1324
+#: setup.c:1360
 msgid "setsid failed"
 msgstr "setsid non riuscita"
 
@@ -7964,7 +8050,7 @@
 msgid "confused by unstable object source data for %s"
 msgstr "sono confuso dall'origine dati oggetto non stabile per %s"
 
-#: sha1-file.c:1906 builtin/pack-objects.c:1055
+#: sha1-file.c:1906 builtin/pack-objects.c:1085
 #, c-format
 msgid "failed utime() on %s"
 msgstr "utime() di %s non riuscita"
@@ -8144,43 +8230,43 @@
 msgstr "nome oggetto non valido: '%.*s'."
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
-#: strbuf.c:853
+#: strbuf.c:848
 #, c-format
 msgid "%u.%2.2u GiB"
 msgstr "%u.%2.2u GiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
-#: strbuf.c:855
+#: strbuf.c:850
 #, c-format
 msgid "%u.%2.2u GiB/s"
 msgstr "%u.%2.2u GiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte
-#: strbuf.c:863
+#: strbuf.c:858
 #, c-format
 msgid "%u.%2.2u MiB"
 msgstr "%u.%2.2u MiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
-#: strbuf.c:865
+#: strbuf.c:860
 #, c-format
 msgid "%u.%2.2u MiB/s"
 msgstr "%u.%2.2u MiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte
-#: strbuf.c:872
+#: strbuf.c:867
 #, c-format
 msgid "%u.%2.2u KiB"
 msgstr "%u.%2.2u KiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
-#: strbuf.c:874
+#: strbuf.c:869
 #, c-format
 msgid "%u.%2.2u KiB/s"
 msgstr "%u.%2.2u KiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte
-#: strbuf.c:880
+#: strbuf.c:875
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -8188,14 +8274,14 @@
 msgstr[1] "%u byte"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte/second
-#: strbuf.c:882
+#: strbuf.c:877
 #, c-format
 msgid "%u byte/s"
 msgid_plural "%u bytes/s"
 msgstr[0] "%u byte/s"
 msgstr[1] "%u byte/s"
 
-#: strbuf.c:1180
+#: strbuf.c:1175
 #, c-format
 msgid "could not edit '%s'"
 msgstr "impossibile modificare '%s'"
@@ -8449,7 +8535,7 @@
 msgid "could not read from stdin"
 msgstr "impossibile leggere dallo standard input"
 
-#: trailer.c:1011 wrapper.c:665
+#: trailer.c:1011 wrapper.c:673
 #, c-format
 msgid "could not stat %s"
 msgstr "impossibile eseguire lo stat di '%s'"
@@ -8473,20 +8559,20 @@
 msgid "could not rename temporary file to %s"
 msgstr "impossibile ridenominare il file temporaneo in %s"
 
-#: transport-helper.c:61 transport-helper.c:90
+#: transport-helper.c:62 transport-helper.c:91
 msgid "full write to remote helper failed"
 msgstr "scrittura completa verso l'helper remoto non riuscita"
 
-#: transport-helper.c:144
+#: transport-helper.c:145
 #, c-format
 msgid "unable to find remote helper for '%s'"
 msgstr "impossibile trovare l'helper remoto per '%s'"
 
-#: transport-helper.c:160 transport-helper.c:571
+#: transport-helper.c:161 transport-helper.c:575
 msgid "can't dup helper output fd"
 msgstr "impossibile duplicare il descrittore file dell'output helper"
 
-#: transport-helper.c:211
+#: transport-helper.c:214
 #, c-format
 msgid ""
 "unknown mandatory capability %s; this remote helper probably needs newer "
@@ -8495,161 +8581,166 @@
 "capability necessaria %s sconosciuta; quest'helper remoto probabilmente "
 "richiede una versione di Git più recente"
 
-#: transport-helper.c:217
+#: transport-helper.c:220
 msgid "this remote helper should implement refspec capability"
 msgstr "questo helper remoto dovrebbe implementare la capability refspec"
 
-#: transport-helper.c:284 transport-helper.c:425
+#: transport-helper.c:287 transport-helper.c:429
 #, c-format
 msgid "%s unexpectedly said: '%s'"
 msgstr "%s ha inviato un messaggio inatteso: '%s'"
 
-#: transport-helper.c:414
+#: transport-helper.c:417
 #, c-format
 msgid "%s also locked %s"
 msgstr "%s ha bloccato anche %s"
 
-#: transport-helper.c:493
+#: transport-helper.c:497
 msgid "couldn't run fast-import"
 msgstr "impossibile eseguire fast-import"
 
-#: transport-helper.c:516
+#: transport-helper.c:520
 msgid "error while running fast-import"
 msgstr "errore durante l'esecuzione di fast-import"
 
-#: transport-helper.c:545 transport-helper.c:1135
+#: transport-helper.c:549 transport-helper.c:1156
 #, c-format
 msgid "could not read ref %s"
 msgstr "impossibile leggere il riferimento %s"
 
-#: transport-helper.c:590
+#: transport-helper.c:594
 #, c-format
 msgid "unknown response to connect: %s"
 msgstr "risposta inattesa a connect: %s"
 
-#: transport-helper.c:612
+#: transport-helper.c:616
 msgid "setting remote service path not supported by protocol"
 msgstr ""
 "l'impostazione del percorso del servizio remoto non è supportata dal "
 "protocollo"
 
-#: transport-helper.c:614
+#: transport-helper.c:618
 msgid "invalid remote service path"
 msgstr "percorso servizio remoto non valido"
 
-#: transport-helper.c:657 transport.c:1339
+#: transport-helper.c:661 transport.c:1347
 msgid "operation not supported by protocol"
 msgstr "operazione non supportata dal protocollo"
 
-#: transport-helper.c:660
+#: transport-helper.c:664
 #, c-format
 msgid "can't connect to subservice %s"
 msgstr "impossibile connettersi al sottoservizio %s"
 
-#: transport-helper.c:736
+#: transport-helper.c:740
 #, c-format
 msgid "expected ok/error, helper said '%s'"
 msgstr "attesi ok/error, l'helper ha inviato '%s'"
 
-#: transport-helper.c:789
+#: transport-helper.c:793
 #, c-format
 msgid "helper reported unexpected status of %s"
 msgstr "l'helper ha segnalato uno stato inatteso di %s"
 
-#: transport-helper.c:850
+#: transport-helper.c:854
 #, c-format
 msgid "helper %s does not support dry-run"
 msgstr "l'helper %s non supporta dry-run"
 
-#: transport-helper.c:853
+#: transport-helper.c:857
 #, c-format
 msgid "helper %s does not support --signed"
 msgstr "l'helper %s non supporta --signed"
 
-#: transport-helper.c:856
+#: transport-helper.c:860
 #, c-format
 msgid "helper %s does not support --signed=if-asked"
 msgstr "l'helper %s non supporta --signed=if-asked"
 
-#: transport-helper.c:861
+#: transport-helper.c:865
 #, c-format
 msgid "helper %s does not support --atomic"
 msgstr "l'helper %s non supporta --atomic"
 
-#: transport-helper.c:867
+#: transport-helper.c:871
 #, c-format
 msgid "helper %s does not support 'push-option'"
 msgstr "l'helper %s non supporta 'push-option'"
 
-#: transport-helper.c:966
+#: transport-helper.c:970
 msgid "remote-helper doesn't support push; refspec needed"
 msgstr ""
 "l'helper remoto non supporta il push; è necessario uno specificatore "
 "riferimento"
 
-#: transport-helper.c:971
+#: transport-helper.c:975
 #, c-format
 msgid "helper %s does not support 'force'"
 msgstr "l'helper %s non supporta 'force'"
 
-#: transport-helper.c:1018
+#: transport-helper.c:1022
 msgid "couldn't run fast-export"
 msgstr "impossibile eseguire fast-export"
 
-#: transport-helper.c:1023
+#: transport-helper.c:1027
 msgid "error while running fast-export"
 msgstr "errore durante l'esecuzione di fast-export"
 
-#: transport-helper.c:1048
+#: transport-helper.c:1052
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
-"Perhaps you should specify a branch such as 'master'.\n"
+"Perhaps you should specify a branch.\n"
 msgstr ""
 "Nessun riferimento in comune e nessuno specificato; non eseguo nulla.\n"
-"Forse dovresti specificare un branch come 'master'.\n"
+"Forse dovresti specificare un branch.\n"
 
-#: transport-helper.c:1121
+#: transport-helper.c:1133
+#, c-format
+msgid "unsupported object format '%s'"
+msgstr "formato oggetto non supportato: '%s'"
+
+#: transport-helper.c:1142
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "risposta malformata nell'elenco riferimenti: %s"
 
-#: transport-helper.c:1273
+#: transport-helper.c:1294
 #, c-format
 msgid "read(%s) failed"
 msgstr "read(%s) non riuscita"
 
-#: transport-helper.c:1300
+#: transport-helper.c:1321
 #, c-format
 msgid "write(%s) failed"
 msgstr "write(%s) non riuscita"
 
-#: transport-helper.c:1349
+#: transport-helper.c:1370
 #, c-format
 msgid "%s thread failed"
 msgstr "thread %s non riuscito"
 
-#: transport-helper.c:1353
+#: transport-helper.c:1374
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "join non riuscita per il thread %s: %s"
 
-#: transport-helper.c:1372 transport-helper.c:1376
+#: transport-helper.c:1393 transport-helper.c:1397
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "impossibile avviare il thread per la copia dei dati: %s"
 
-#: transport-helper.c:1413
+#: transport-helper.c:1434
 #, c-format
 msgid "%s process failed to wait"
 msgstr "wait non riuscita per il processo %s"
 
-#: transport-helper.c:1417
+#: transport-helper.c:1438
 #, c-format
 msgid "%s process failed"
 msgstr "processo %s non riuscito"
 
-#: transport-helper.c:1435 transport-helper.c:1444
+#: transport-helper.c:1456 transport-helper.c:1465
 msgid "can't start thread for copying data"
 msgstr "impossibile avviare il thread per la copia dei dati"
 
@@ -8663,33 +8754,33 @@
 msgid "could not read bundle '%s'"
 msgstr "impossibile leggere il bundle '%s'"
 
-#: transport.c:214
+#: transport.c:220
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "trasporto: opzione profondità '%s' non valida"
 
-#: transport.c:266
+#: transport.c:272
 msgid "see protocol.version in 'git help config' for more details"
 msgstr "vedi protocol.version in 'git help config' per maggiori dettagli"
 
-#: transport.c:267
+#: transport.c:273
 msgid "server options require protocol version 2 or later"
 msgstr "le opzioni server richiedono la versione 2 o successiva del protocollo"
 
-#: transport.c:632
+#: transport.c:631
 msgid "could not parse transport.color.* config"
 msgstr "impossibile analizzare la configurazione transport.color.*"
 
-#: transport.c:705
+#: transport.c:704
 msgid "support for protocol v2 not implemented yet"
 msgstr "supporto alla versione 2 del protocollo non ancora implementato"
 
-#: transport.c:839
+#: transport.c:838
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "valore sconosciuto per la configurazione '%s': %s"
 
-#: transport.c:905
+#: transport.c:904
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "trasporto '%s' non consentito"
@@ -8698,7 +8789,7 @@
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync non è più supportato"
 
-#: transport.c:1052
+#: transport.c:1059
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -8707,7 +8798,7 @@
 "I seguenti percorsi sottomodulo contengono modifiche\n"
 "non trovate su nessun remoto:\n"
 
-#: transport.c:1056
+#: transport.c:1063
 #, c-format
 msgid ""
 "\n"
@@ -8734,11 +8825,11 @@
 "per eseguirne il push a un remoto.\n"
 "\n"
 
-#: transport.c:1064
+#: transport.c:1071
 msgid "Aborting."
 msgstr "Interrompo l'operazione."
 
-#: transport.c:1209
+#: transport.c:1216
 msgid "failed to push all needed submodules"
 msgstr "push di tutti i sottomoduli richiesti non riuscito"
 
@@ -9031,7 +9122,7 @@
 msgid "Updating index flags"
 msgstr "Aggiornamento dei contrassegni indice in corso"
 
-#: upload-pack.c:1337
+#: upload-pack.c:1415
 msgid "expected flush after fetch arguments"
 msgstr "atteso flush dopo recupero argomenti"
 
@@ -9068,50 +9159,50 @@
 msgid "Fetching objects"
 msgstr "Recupero oggetti in corso"
 
-#: worktree.c:262 builtin/am.c:2098
+#: worktree.c:248 builtin/am.c:2098
 #, c-format
 msgid "failed to read '%s'"
 msgstr "lettura di '%s' non riuscita"
 
-#: worktree.c:309
+#: worktree.c:295
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr ""
 "'%s' nell'albero di lavoro principale non è la directory del repository"
 
-#: worktree.c:320
+#: worktree.c:306
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr ""
 "il file '%s' non contiene il percorso assoluto alla posizione dell'albero di "
 "lavoro"
 
-#: worktree.c:332
+#: worktree.c:318
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' non esiste"
 
-#: worktree.c:338
+#: worktree.c:324
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' non è un file .git, codice d'errore %d"
 
-#: worktree.c:347
+#: worktree.c:333
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' non punta a '%s'"
 
-#: wrapper.c:186 wrapper.c:356
+#: wrapper.c:194 wrapper.c:364
 #, c-format
 msgid "could not open '%s' for reading and writing"
 msgstr "impossibile aprire '%s' in lettura e scrittura"
 
-#: wrapper.c:387 wrapper.c:588
+#: wrapper.c:395 wrapper.c:596
 #, c-format
 msgid "unable to access '%s'"
 msgstr "impossibile accedere a '%s'"
 
-#: wrapper.c:596
+#: wrapper.c:604
 msgid "unable to get current working directory"
 msgstr "impossibile ottenere la directory di lavoro corrente"
 
@@ -9519,39 +9610,45 @@
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (usa \"git bisect reset\" per tornare al branch originario)"
 
-#: wt-status.c:1692
+#: wt-status.c:1494
+#, c-format
+msgid "You are in a sparse checkout with %d%% of tracked files present."
+msgstr ""
+"Sei in uno sparse checkout in cui è presente il %d%% dei file tracciati."
+
+#: wt-status.c:1733
 msgid "On branch "
 msgstr "Sul branch "
 
-#: wt-status.c:1699
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "rebase interattivo in corso su "
 
-#: wt-status.c:1701
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "rebase in corso su "
 
-#: wt-status.c:1711
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Attualmente non sei su alcun branch."
 
-#: wt-status.c:1728
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "Commit iniziale"
 
-#: wt-status.c:1729
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "Non ci sono ancora commit"
 
-#: wt-status.c:1743
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "File non tracciati"
 
-#: wt-status.c:1745
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "File ignorati"
 
-#: wt-status.c:1749
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9563,31 +9660,31 @@
 "ma devi stare attento a non dimenticarti di aggiungere\n"
 "autonomamente i file nuovi (vedi 'git help status')."
 
-#: wt-status.c:1755
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "File non tracciati non elencati%s"
 
-#: wt-status.c:1757
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (usa l'opzione -u per visualizzare i file non tracciati)"
 
-#: wt-status.c:1763
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Nessuna modifica"
 
-#: wt-status.c:1768
+#: wt-status.c:1809
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "nessuna modifica aggiunta al commit (usa \"git add\" e/o \"git commit -a\")\n"
 
-#: wt-status.c:1771
+#: wt-status.c:1812
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "nessuna modifica aggiunta al commit\n"
 
-#: wt-status.c:1774
+#: wt-status.c:1815
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9596,68 +9693,68 @@
 "non è stato aggiunto nulla al commit ma sono presenti file non tracciati "
 "(usa \"git add\" per tracciarli)\n"
 
-#: wt-status.c:1777
+#: wt-status.c:1818
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr ""
 "non è stato aggiunto nulla al commit ma sono presenti file non tracciati\n"
 
-#: wt-status.c:1780
+#: wt-status.c:1821
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 "non c'è nulla di cui eseguire il commit (crea/copia dei file e usa \"git add"
 "\" per tracciarli)\n"
 
-#: wt-status.c:1783 wt-status.c:1788
+#: wt-status.c:1824 wt-status.c:1829
 #, c-format
 msgid "nothing to commit\n"
 msgstr "non c'è nulla di cui eseguire il commit\n"
 
-#: wt-status.c:1786
+#: wt-status.c:1827
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 "non c'è nulla di cui eseguire il commit (usa -u per visualizzare i file non "
 "tracciati)\n"
 
-#: wt-status.c:1790
+#: wt-status.c:1831
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "non c'è nulla di cui eseguire il commit, l'albero di lavoro è pulito\n"
 
-#: wt-status.c:1903
+#: wt-status.c:1944
 msgid "No commits yet on "
 msgstr "Non ci sono ancora commit su"
 
-#: wt-status.c:1907
+#: wt-status.c:1948
 msgid "HEAD (no branch)"
 msgstr "HEAD (nessun branch)"
 
-#: wt-status.c:1938
+#: wt-status.c:1979
 msgid "different"
 msgstr "differente"
 
-#: wt-status.c:1940 wt-status.c:1948
+#: wt-status.c:1981 wt-status.c:1989
 msgid "behind "
 msgstr "indietro "
 
-#: wt-status.c:1943 wt-status.c:1946
+#: wt-status.c:1984 wt-status.c:1987
 msgid "ahead "
 msgstr "avanti "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2468
+#: wt-status.c:2509
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "impossibile eseguire %s: ci sono delle modifiche non in staging."
 
-#: wt-status.c:2474
+#: wt-status.c:2515
 msgid "additionally, your index contains uncommitted changes."
 msgstr ""
 "inoltre, l'indice contiene modifiche di cui non è stato eseguito il commit."
 
-#: wt-status.c:2476
+#: wt-status.c:2517
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr ""
@@ -9736,7 +9833,7 @@
 msgid "interactive picking"
 msgstr "scelta interattiva"
 
-#: builtin/add.c:326 builtin/checkout.c:1535 builtin/reset.c:308
+#: builtin/add.c:326 builtin/checkout.c:1533 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "seleziona gli hunk in modalità interattiva"
 
@@ -9866,14 +9963,14 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "Il parametro --chmod '%s' deve essere -x o +x"
 
-#: builtin/add.c:501 builtin/checkout.c:1703 builtin/commit.c:351
+#: builtin/add.c:501 builtin/checkout.c:1701 builtin/commit.c:351
 #: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1506
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr ""
 "--pathspec-from-file non è compatibile con gli argomenti specificatore "
 "percorso"
 
-#: builtin/add.c:508 builtin/checkout.c:1715 builtin/commit.c:357
+#: builtin/add.c:508 builtin/checkout.c:1713 builtin/commit.c:357
 #: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1512
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul richiede --pathspec-from-file"
@@ -10141,7 +10238,7 @@
 msgid "allow fall back on 3way merging if needed"
 msgstr "consenti il ripiego sul merge a tre vie se necessario"
 
-#: builtin/am.c:2218 builtin/init-db.c:541 builtin/prune-packed.c:16
+#: builtin/am.c:2218 builtin/init-db.c:559 builtin/prune-packed.c:16
 #: builtin/repack.c:306 builtin/stash.c:816
 msgid "be quiet"
 msgstr "non visualizzare messaggi"
@@ -10198,7 +10295,7 @@
 
 #: builtin/am.c:2262 builtin/branch.c:659 builtin/for-each-ref.c:38
 #: builtin/replace.c:556 builtin/tag.c:438 builtin/verify-tag.c:38
-#: bugreport.c:131
+#: bugreport.c:137
 msgid "format"
 msgstr "formato"
 
@@ -10504,113 +10601,117 @@
 "argomento %s non valido per 'git bisect terms'.\n"
 "Le opzioni supportate sono: --term-good|--term-old e --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:478
+#: builtin/bisect--helper.c:460 builtin/bisect--helper.c:473
+msgid "'' is not a valid term"
+msgstr "'' non è un termine valido"
+
+#: builtin/bisect--helper.c:483
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "opzione non riconosciuta: '%s'"
 
-#: builtin/bisect--helper.c:482
+#: builtin/bisect--helper.c:487
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "sembra che '%s' non sia una revisione valida"
 
-#: builtin/bisect--helper.c:514
+#: builtin/bisect--helper.c:519
 msgid "bad HEAD - I need a HEAD"
 msgstr "HEAD non valida - ho bisogno di un'HEAD"
 
-#: builtin/bisect--helper.c:529
+#: builtin/bisect--helper.c:534
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr ""
 "checkout di '%s' non riuscito. Prova con 'git bisect start <branch valido>'."
 
-#: builtin/bisect--helper.c:550
+#: builtin/bisect--helper.c:555
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "non eseguirò la bisezione su un albero sottoposto a cg-seek"
 
-#: builtin/bisect--helper.c:553
+#: builtin/bisect--helper.c:558
 msgid "bad HEAD - strange symbolic ref"
 msgstr "head non valida - riferimento simbolico strano"
 
-#: builtin/bisect--helper.c:577
+#: builtin/bisect--helper.c:582
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "riferimento non valido: '%s'"
 
-#: builtin/bisect--helper.c:633
+#: builtin/bisect--helper.c:638
 msgid "perform 'git bisect next'"
 msgstr "esegui 'git bisect next'"
 
-#: builtin/bisect--helper.c:635
+#: builtin/bisect--helper.c:640
 msgid "write the terms to .git/BISECT_TERMS"
 msgstr "scrivi i termini in .git/BISECT_TERMS"
 
-#: builtin/bisect--helper.c:637
+#: builtin/bisect--helper.c:642
 msgid "cleanup the bisection state"
 msgstr "pulisci lo stato bisezione"
 
-#: builtin/bisect--helper.c:639
+#: builtin/bisect--helper.c:644
 msgid "check for expected revs"
 msgstr "controlla se le revisioni attese sono presenti"
 
-#: builtin/bisect--helper.c:641
+#: builtin/bisect--helper.c:646
 msgid "reset the bisection state"
 msgstr "reimposta lo stato della bisezione"
 
-#: builtin/bisect--helper.c:643
+#: builtin/bisect--helper.c:648
 msgid "write out the bisection state in BISECT_LOG"
 msgstr "scrivi lo stato della bisezione in BISECT_LOG"
 
-#: builtin/bisect--helper.c:645
+#: builtin/bisect--helper.c:650
 msgid "check and set terms in a bisection state"
 msgstr "controlla e imposta i termini in uno stato bisezione"
 
-#: builtin/bisect--helper.c:647
+#: builtin/bisect--helper.c:652
 msgid "check whether bad or good terms exist"
 msgstr ""
 "controlla se esistono termini per revisioni non funzionanti o funzionanti"
 
-#: builtin/bisect--helper.c:649
+#: builtin/bisect--helper.c:654
 msgid "print out the bisect terms"
 msgstr "stampa i termini della bisezione"
 
-#: builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:656
 msgid "start the bisect session"
 msgstr "inizia la sessione di bisezione"
 
-#: builtin/bisect--helper.c:653
+#: builtin/bisect--helper.c:658
 msgid "update BISECT_HEAD instead of checking out the current commit"
 msgstr "aggiorna BISECT_HEAD anziché eseguire il checkout del commit corrente"
 
-#: builtin/bisect--helper.c:655
+#: builtin/bisect--helper.c:660
 msgid "no log for BISECT_WRITE"
 msgstr "non registrare le operazioni eseguite per BISECT_WRITE"
 
-#: builtin/bisect--helper.c:673
+#: builtin/bisect--helper.c:678
 msgid "--write-terms requires two arguments"
 msgstr "--write-terms richiede due argomenti"
 
-#: builtin/bisect--helper.c:677
+#: builtin/bisect--helper.c:682
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state non richiede argomenti"
 
-#: builtin/bisect--helper.c:684
+#: builtin/bisect--helper.c:689
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset richiede o nessun argomento o un commit"
 
-#: builtin/bisect--helper.c:688
+#: builtin/bisect--helper.c:693
 msgid "--bisect-write requires either 4 or 5 arguments"
 msgstr "--bisect-write richiede o quattro o cinque argomenti"
 
-#: builtin/bisect--helper.c:694
+#: builtin/bisect--helper.c:699
 msgid "--check-and-set-terms requires 3 arguments"
 msgstr "--check-and-set-terms richiede tre argomenti"
 
-#: builtin/bisect--helper.c:700
+#: builtin/bisect--helper.c:705
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check richiede due o tre argomenti"
 
-#: builtin/bisect--helper.c:706
+#: builtin/bisect--helper.c:711
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms richiede zero o un argomento"
 
@@ -11245,20 +11346,20 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <file> [<nome riferimento>...]"
 
-#: builtin/bundle.c:66 builtin/pack-objects.c:3376
+#: builtin/bundle.c:66 builtin/pack-objects.c:3448
 msgid "do not show progress meter"
 msgstr "non visualizzare la barra di avanzamento"
 
-#: builtin/bundle.c:68 builtin/pack-objects.c:3378
+#: builtin/bundle.c:68 builtin/pack-objects.c:3450
 msgid "show progress meter"
 msgstr "visualizza la barra di avanzamento"
 
-#: builtin/bundle.c:70 builtin/pack-objects.c:3380
+#: builtin/bundle.c:70 builtin/pack-objects.c:3452
 msgid "show progress meter during object writing phase"
 msgstr ""
 "visualizza la barra di avanzamento durante la fase di scrittura oggetti"
 
-#: builtin/bundle.c:73 builtin/pack-objects.c:3383
+#: builtin/bundle.c:73 builtin/pack-objects.c:3455
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "simile a --all-progress quando è visualizzata la barra di avanzamento"
 
@@ -11299,11 +11400,11 @@
 
 #: builtin/cat-file.c:599
 msgid ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 msgstr ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<formato>] | --batch-check[=<formato>])"
+" [--follow-symlinks] [--textconv | --filters]"
 
 #: builtin/cat-file.c:620
 msgid "only one batch option may be specified"
@@ -11337,7 +11438,7 @@
 msgid "for blob objects, run filters on object's content"
 msgstr "esegui i filtri sul contenuto dell'oggetto (per gli oggetti blob)"
 
-#: builtin/cat-file.c:648 git-submodule.sh:984
+#: builtin/cat-file.c:648 git-submodule.sh:958
 msgid "blob"
 msgstr "blob"
 
@@ -11401,8 +11502,8 @@
 msgid "terminate input and output records by a NUL character"
 msgstr "termina i record di input e output con un carattere NUL"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1488 builtin/gc.c:537
-#: builtin/worktree.c:502
+#: builtin/check-ignore.c:21 builtin/checkout.c:1486 builtin/gc.c:537
+#: builtin/worktree.c:561
 msgid "suppress progress reporting"
 msgstr "non visualizzare l'avanzamento dell'operazione"
 
@@ -11494,7 +11595,7 @@
 #: builtin/checkout-index.c:178 builtin/column.c:31
 #: builtin/submodule--helper.c:1400 builtin/submodule--helper.c:1403
 #: builtin/submodule--helper.c:1411 builtin/submodule--helper.c:1909
-#: builtin/worktree.c:675
+#: builtin/worktree.c:754
 msgid "string"
 msgstr "stringa"
 
@@ -11611,11 +11712,11 @@
 msgid "path '%s' is unmerged"
 msgstr "il percorso '%s' non è stato sottoposto a merge"
 
-#: builtin/checkout.c:704
+#: builtin/checkout.c:702
 msgid "you need to resolve your current index first"
 msgstr "prima devi risolvere l'indice corrente"
 
-#: builtin/checkout.c:758
+#: builtin/checkout.c:756
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11624,50 +11725,50 @@
 "impossibile continuare con modifiche in stage nei file seguenti:\n"
 "%s"
 
-#: builtin/checkout.c:861
+#: builtin/checkout.c:859
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Impossibile esaminare il registro dei riferimenti per '%s': %s\n"
 
-#: builtin/checkout.c:903
+#: builtin/checkout.c:901
 msgid "HEAD is now at"
 msgstr "HEAD si trova ora a"
 
-#: builtin/checkout.c:907 builtin/clone.c:720
+#: builtin/checkout.c:905 builtin/clone.c:720
 msgid "unable to update HEAD"
 msgstr "impossibile aggiornare HEAD"
 
-#: builtin/checkout.c:911
+#: builtin/checkout.c:909
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Ripristina il branch '%s'\n"
 
-#: builtin/checkout.c:914
+#: builtin/checkout.c:912
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Si è già su '%s'\n"
 
-#: builtin/checkout.c:918
+#: builtin/checkout.c:916
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Si è passati al branch '%s' e lo si è reimpostato\n"
 
-#: builtin/checkout.c:920 builtin/checkout.c:1344
+#: builtin/checkout.c:918 builtin/checkout.c:1342
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Si è passati a un nuovo branch '%s'\n"
 
-#: builtin/checkout.c:922
+#: builtin/checkout.c:920
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Si è passati al branch '%s'\n"
 
-#: builtin/checkout.c:973
+#: builtin/checkout.c:971
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ...e altri %d.\n"
 
-#: builtin/checkout.c:979
+#: builtin/checkout.c:977
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11690,7 +11791,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:996
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11717,19 +11818,19 @@
 " git branch <nome del nuovo branch> %s\n"
 "\n"
 
-#: builtin/checkout.c:1033
+#: builtin/checkout.c:1031
 msgid "internal error in revision walk"
 msgstr "errore interno durante la visita delle revisioni"
 
-#: builtin/checkout.c:1037
+#: builtin/checkout.c:1035
 msgid "Previous HEAD position was"
 msgstr "La precedente posizione di HEAD era"
 
-#: builtin/checkout.c:1077 builtin/checkout.c:1339
+#: builtin/checkout.c:1075 builtin/checkout.c:1337
 msgid "You are on a branch yet to be born"
 msgstr "Sei su un branch che deve ancora essere creato"
 
-#: builtin/checkout.c:1152
+#: builtin/checkout.c:1150
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11738,7 +11839,7 @@
 "'%s' potrebbe essere sia un file locale, sia un branch da tracciare.\n"
 "Usa -- (e facoltativamente --no-guess) per rimuovere l'ambiguità"
 
-#: builtin/checkout.c:1159
+#: builtin/checkout.c:1157
 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"
@@ -11759,51 +11860,51 @@
 "rispetto a un particolare remoto, ad es. 'origin', potresti voler\n"
 "impostare checkout.defaultRemote=origin nel tuo file di configurazione."
 
-#: builtin/checkout.c:1169
+#: builtin/checkout.c:1167
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' corrisponde a più (%d) branch che ne tracciano uno remoto"
 
-#: builtin/checkout.c:1235
+#: builtin/checkout.c:1233
 msgid "only one reference expected"
 msgstr "atteso solo un riferimento"
 
-#: builtin/checkout.c:1252
+#: builtin/checkout.c:1250
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "atteso solo un riferimento, %d specificati."
 
-#: builtin/checkout.c:1298 builtin/worktree.c:283 builtin/worktree.c:451
+#: builtin/checkout.c:1296 builtin/worktree.c:342 builtin/worktree.c:510
 #, c-format
 msgid "invalid reference: %s"
 msgstr "riferimento non valido: %s"
 
-#: builtin/checkout.c:1311 builtin/checkout.c:1677
+#: builtin/checkout.c:1309 builtin/checkout.c:1675
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "il riferimento non è un albero: %s"
 
-#: builtin/checkout.c:1358
+#: builtin/checkout.c:1356
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "atteso branch, ricevuto tag '%s'"
 
-#: builtin/checkout.c:1360
+#: builtin/checkout.c:1358
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "atteso branch, ricevuto branch remoto '%s'"
 
-#: builtin/checkout.c:1361 builtin/checkout.c:1369
+#: builtin/checkout.c:1359 builtin/checkout.c:1367
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "atteso branch, ricevuto '%s'"
 
-#: builtin/checkout.c:1364
+#: builtin/checkout.c:1362
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "atteso branch, ricevuto commit '%s'"
 
-#: builtin/checkout.c:1380
+#: builtin/checkout.c:1378
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11811,7 +11912,7 @@
 "impossibile cambiare branch durante un merge\n"
 "Considera l'uso di \"git merge --quit\" o di \"git worktree add\"."
 
-#: builtin/checkout.c:1384
+#: builtin/checkout.c:1382
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11819,7 +11920,7 @@
 "impossibile cambiare branch nel bel mezzo di una sessione am\n"
 "Considera l'uso di \"git am --quit\" o di \"git worktree add\"."
 
-#: builtin/checkout.c:1388
+#: builtin/checkout.c:1386
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11827,7 +11928,7 @@
 "impossibile cambiare branch durante un rebase\n"
 "Considera l'uso di \"git rebase --quit\" o di \"git worktree add\"."
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1390
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11835,7 +11936,7 @@
 "impossibile cambiare branch durante un cherry-pick\n"
 "Considera l'uso di \"git cherry-pick --quit\" o di \"git worktree add\"."
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1394
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11843,149 +11944,149 @@
 "impossibile cambiare branch durante un revert\n"
 "Considera l'uso di \"git revert --quit\" o di \"git worktree add\"."
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1398
 msgid "you are switching branch while bisecting"
 msgstr "stai cambiando branch durante una bisezione"
 
-#: builtin/checkout.c:1407
+#: builtin/checkout.c:1405
 msgid "paths cannot be used with switching branches"
 msgstr "i percorsi non possono essere usati passando da un branch a un altro"
 
-#: builtin/checkout.c:1410 builtin/checkout.c:1414 builtin/checkout.c:1418
+#: builtin/checkout.c:1408 builtin/checkout.c:1412 builtin/checkout.c:1416
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' non può essere usato passando da un branch a un altro"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1425 builtin/checkout.c:1428
-#: builtin/checkout.c:1433 builtin/checkout.c:1438
+#: builtin/checkout.c:1420 builtin/checkout.c:1423 builtin/checkout.c:1426
+#: builtin/checkout.c:1431 builtin/checkout.c:1436
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' non può essere usato con '%s'"
 
-#: builtin/checkout.c:1435
+#: builtin/checkout.c:1433
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' non accetta l'argomento <punto di partenza>"
 
-#: builtin/checkout.c:1443
+#: builtin/checkout.c:1441
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Impossibile cambiare branch per passare a '%s' che non è un commit"
 
-#: builtin/checkout.c:1450
+#: builtin/checkout.c:1448
 msgid "missing branch or commit argument"
 msgstr "argomento branch o commit mancante"
 
-#: builtin/checkout.c:1492 builtin/clone.c:91 builtin/commit-graph.c:80
-#: builtin/commit-graph.c:164 builtin/fetch.c:168 builtin/merge.c:288
+#: builtin/checkout.c:1490 builtin/clone.c:91 builtin/commit-graph.c:82
+#: builtin/commit-graph.c:189 builtin/fetch.c:168 builtin/merge.c:288
 #: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:561
 #: builtin/send-pack.c:173
 msgid "force progress reporting"
 msgstr "forza l'indicazione d'avanzamento dell'operazione"
 
-#: builtin/checkout.c:1493
+#: builtin/checkout.c:1491
 msgid "perform a 3-way merge with the new branch"
 msgstr "esegui un merge a tre vie con il nuovo branch"
 
-#: builtin/checkout.c:1494 builtin/log.c:1709 parse-options.h:322
+#: builtin/checkout.c:1492 builtin/log.c:1709 parse-options.h:322
 msgid "style"
 msgstr "stile"
 
-#: builtin/checkout.c:1495
+#: builtin/checkout.c:1493
 msgid "conflict style (merge or diff3)"
 msgstr "stile conflitti (merge o diff3)"
 
-#: builtin/checkout.c:1507 builtin/worktree.c:499
+#: builtin/checkout.c:1505 builtin/worktree.c:558
 msgid "detach HEAD at named commit"
 msgstr "scollega l'HEAD al commit specificato"
 
-#: builtin/checkout.c:1508
+#: builtin/checkout.c:1506
 msgid "set upstream info for new branch"
 msgstr "imposta le informazioni sull'upstream per il nuovo branch"
 
-#: builtin/checkout.c:1510
+#: builtin/checkout.c:1508
 msgid "force checkout (throw away local modifications)"
 msgstr "esegui forzatamente il checkout (scarta le modifiche locali)"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new-branch"
 msgstr "nuovo branch"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new unparented branch"
 msgstr "nuovo branch senza genitore"
 
-#: builtin/checkout.c:1514 builtin/merge.c:292
+#: builtin/checkout.c:1512 builtin/merge.c:292
 msgid "update ignored files (default)"
 msgstr "aggiorna i file ignorati (impostazione predefinita)"
 
-#: builtin/checkout.c:1517
+#: builtin/checkout.c:1515
 msgid "do not check if another worktree is holding the given ref"
 msgstr ""
 "non controllare se un altro albero di lavoro contiene il riferimento "
 "specificato"
 
-#: builtin/checkout.c:1530
+#: builtin/checkout.c:1528
 msgid "checkout our version for unmerged files"
 msgstr ""
 "esegui il checkout della nostra versione per i file non sottoposti a merge"
 
-#: builtin/checkout.c:1533
+#: builtin/checkout.c:1531
 msgid "checkout their version for unmerged files"
 msgstr ""
 "esegui il checkout della loro versione per i file non sottoposti a merge"
 
-#: builtin/checkout.c:1537
+#: builtin/checkout.c:1535
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "non limitare gli specificatori percorso solo alle voci sparse"
 
-#: builtin/checkout.c:1592
+#: builtin/checkout.c:1590
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "le opzioni -%c, -%c e --orphan sono mutuamente esclusive"
 
-#: builtin/checkout.c:1596
+#: builtin/checkout.c:1594
 msgid "-p and --overlay are mutually exclusive"
 msgstr "le opzioni -p e --overlay sono mutualmente esclusive"
 
-#: builtin/checkout.c:1633
+#: builtin/checkout.c:1631
 msgid "--track needs a branch name"
 msgstr "--track richiede il nome di un branch"
 
-#: builtin/checkout.c:1638
+#: builtin/checkout.c:1636
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "nome del branch mancante; prova con -%c"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "could not resolve %s"
 msgstr "impossibile risolvere %s"
 
-#: builtin/checkout.c:1686
+#: builtin/checkout.c:1684
 msgid "invalid path specification"
 msgstr "specificatore percorso non valido"
 
-#: builtin/checkout.c:1693
+#: builtin/checkout.c:1691
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr ""
 "'%s' non è un commit e non si può creare un branch '%s' che parta da esso"
 
-#: builtin/checkout.c:1697
+#: builtin/checkout.c:1695
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach non accetta un percorso '%s' come argomento"
 
-#: builtin/checkout.c:1706
+#: builtin/checkout.c:1704
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file non è compatibile con --detach"
 
-#: builtin/checkout.c:1709 builtin/reset.c:325 builtin/stash.c:1503
+#: builtin/checkout.c:1707 builtin/reset.c:325 builtin/stash.c:1503
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file non è compatibile con --patch"
 
-#: builtin/checkout.c:1720
+#: builtin/checkout.c:1718
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -11993,69 +12094,70 @@
 "git checkout: --ours/--theirs, --force e --merge sono incompatibili quando\n"
 "si esegue il checkout dell'indice."
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 msgid "you must specify path(s) to restore"
 msgstr "devi specificare il percorso/i percorsi da ripristinare"
 
-#: builtin/checkout.c:1751 builtin/checkout.c:1753 builtin/checkout.c:1802
-#: builtin/checkout.c:1804 builtin/clone.c:121 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/worktree.c:495 builtin/worktree.c:497
+#: builtin/checkout.c:1749 builtin/checkout.c:1751 builtin/checkout.c:1800
+#: builtin/checkout.c:1802 builtin/clone.c:121 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2295 builtin/worktree.c:554
+#: builtin/worktree.c:556
 msgid "branch"
 msgstr "branch"
 
-#: builtin/checkout.c:1752
+#: builtin/checkout.c:1750
 msgid "create and checkout a new branch"
 msgstr "crea un nuovo branch ed eseguine il checkout"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid "create/reset and checkout a branch"
 msgstr "crea/reimposta un branch ed eseguine il checkout"
 
-#: builtin/checkout.c:1755
+#: builtin/checkout.c:1753
 msgid "create reflog for new branch"
 msgstr "crea il registro dei riferimenti per il nuovo branch"
 
-#: builtin/checkout.c:1757
+#: builtin/checkout.c:1755
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "prevedi 'git checkout <branch inesistente>' (impostazione predefinita)"
 
-#: builtin/checkout.c:1758
+#: builtin/checkout.c:1756
 msgid "use overlay mode (default)"
 msgstr "usa modalità overlay (impostazione predefinita)"
 
-#: builtin/checkout.c:1803
+#: builtin/checkout.c:1801
 msgid "create and switch to a new branch"
 msgstr "crea un nuovo branch e passa a quest'ultimo"
 
-#: builtin/checkout.c:1805
+#: builtin/checkout.c:1803
 msgid "create/reset and switch to a branch"
 msgstr "crea/reimposta un branch e passa a quest'ultimo"
 
-#: builtin/checkout.c:1807
+#: builtin/checkout.c:1805
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "prevedi 'git switch <branch inesistente>'"
 
-#: builtin/checkout.c:1809
+#: builtin/checkout.c:1807
 msgid "throw away local modifications"
 msgstr "scarta le modifiche locali"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "which tree-ish to checkout from"
 msgstr "albero da cui eseguire il checkout"
 
-#: builtin/checkout.c:1845
+#: builtin/checkout.c:1843
 msgid "restore the index"
 msgstr "ripristina l'indice"
 
-#: builtin/checkout.c:1847
+#: builtin/checkout.c:1845
 msgid "restore the working tree (default)"
 msgstr "ripristina l'albero di lavoro (impostazione predefinita)"
 
-#: builtin/checkout.c:1849
+#: builtin/checkout.c:1847
 msgid "ignore unmerged entries"
 msgstr "ignora voci non sottoposte a merge"
 
-#: builtin/checkout.c:1850
+#: builtin/checkout.c:1848
 msgid "use overlay mode"
 msgstr "usa modalità overlay"
 
@@ -12220,11 +12322,7 @@
 msgid "remove only ignored files"
 msgstr "elimina solo i file ignorati"
 
-#: builtin/clean.c:931
-msgid "-x and -X cannot be used together"
-msgstr "-x e -X non possono essere usati insieme"
-
-#: builtin/clean.c:935
+#: builtin/clean.c:929
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -12232,7 +12330,7 @@
 "clean.requireForce è impostato a true e né -i, né -n, né -f sono stati "
 "specificati; mi rifiuto di eseguire la pulizia"
 
-#: builtin/clean.c:938
+#: builtin/clean.c:932
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -12240,6 +12338,10 @@
 "clean.requireForce è true per impostazione predefinita e né -i, né -n, né -f "
 "sono stati specificati; mi rifiuto di eseguire la pulizia"
 
+#: builtin/clean.c:944
+msgid "-x and -X cannot be used together"
+msgstr "-x e -X non possono essere usati insieme"
+
 #: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<opzioni>] [--] <repository> [<directory>]"
@@ -12248,7 +12350,7 @@
 msgid "don't create a checkout"
 msgstr "non creare un checkout"
 
-#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:536
+#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:554
 msgid "create a bare repository"
 msgstr "crea un repository spoglio"
 
@@ -12280,11 +12382,11 @@
 msgid "number of submodules cloned in parallel"
 msgstr "numero di sottomoduli clonati in parallelo"
 
-#: builtin/clone.c:111 builtin/init-db.c:533
+#: builtin/clone.c:111 builtin/init-db.c:551
 msgid "template-directory"
 msgstr "directory modelli"
 
-#: builtin/clone.c:112 builtin/init-db.c:534
+#: builtin/clone.c:112 builtin/init-db.c:552
 msgid "directory from which templates will be used"
 msgstr "directory da cui saranno recuperati i modelli"
 
@@ -12298,8 +12400,8 @@
 msgid "use --reference only while cloning"
 msgstr "usa --reference solo durante la clonazione"
 
-#: builtin/clone.c:119 builtin/column.c:27 builtin/merge-file.c:46
-#: builtin/pack-objects.c:3442 builtin/repack.c:329
+#: builtin/clone.c:119 builtin/column.c:27 builtin/init-db.c:562
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3514 builtin/repack.c:329
 msgid "name"
 msgstr "nome"
 
@@ -12324,7 +12426,7 @@
 msgid "create a shallow clone of that depth"
 msgstr "crea un clone shallow con questa profondità"
 
-#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3431
+#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3503
 #: builtin/pull.c:211
 msgid "time"
 msgstr "tempo"
@@ -12357,11 +12459,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "tutti i sottomoduli clonati saranno shallow"
 
-#: builtin/clone.c:137 builtin/init-db.c:542
+#: builtin/clone.c:137 builtin/init-db.c:560
 msgid "gitdir"
 msgstr "directory Git"
 
-#: builtin/clone.c:138 builtin/init-db.c:543
+#: builtin/clone.c:138 builtin/init-db.c:561
 msgid "separate git dir from working tree"
 msgstr "separa la directory Git dall'albero di lavoro"
 
@@ -12495,7 +12597,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "impossibile eseguire l'unlink del file alternates temporaneo"
 
-#: builtin/clone.c:971 builtin/receive-pack.c:1972
+#: builtin/clone.c:971 builtin/receive-pack.c:1982
 msgid "Too many arguments."
 msgstr "Troppi argomenti."
 
@@ -12512,49 +12614,49 @@
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "le opzioni --bare e --separate-git-dir non sono compatibili."
 
-#: builtin/clone.c:1004
+#: builtin/clone.c:1007
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "il repository '%s' non esiste"
 
-#: builtin/clone.c:1010 builtin/fetch.c:1789
+#: builtin/clone.c:1011 builtin/fetch.c:1794
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "la profondità %s non è un numero positivo"
 
-#: builtin/clone.c:1020
+#: builtin/clone.c:1021
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr ""
 "il percorso di destinazione '%s' esiste già e non è una directory vuota."
 
-#: builtin/clone.c:1030
+#: builtin/clone.c:1033
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "l'albero di lavoro '%s' esiste già."
 
-#: builtin/clone.c:1045 builtin/clone.c:1066 builtin/difftool.c:271
-#: builtin/log.c:1886 builtin/worktree.c:295 builtin/worktree.c:327
+#: builtin/clone.c:1048 builtin/clone.c:1069 builtin/difftool.c:271
+#: builtin/log.c:1886 builtin/worktree.c:354 builtin/worktree.c:386
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "impossibile creare le prime directory di '%s'"
 
-#: builtin/clone.c:1050
+#: builtin/clone.c:1053
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "impossibile creare la directory dell'albero di lavoro '%s'"
 
-#: builtin/clone.c:1070
+#: builtin/clone.c:1073
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Clone nel repository spoglio '%s' in corso...\n"
 
-#: builtin/clone.c:1072
+#: builtin/clone.c:1075
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Clone in '%s' in corso...\n"
 
-#: builtin/clone.c:1096
+#: builtin/clone.c:1099
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -12562,36 +12664,36 @@
 "il clone --recursive non è compatibile né con --reference né con --reference-"
 "if-able"
 
-#: builtin/clone.c:1160
+#: builtin/clone.c:1164
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "L'opzione --depth è ignorata nei cloni locali; usa file://."
 
-#: builtin/clone.c:1162
+#: builtin/clone.c:1166
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "L'opzione --shallow-since è ignorata nei cloni locali; usa file://."
 
-#: builtin/clone.c:1164
+#: builtin/clone.c:1168
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr "L'opzione --shallow-exclude è ignorata nei cloni locali; usa file://."
 
-#: builtin/clone.c:1166
+#: builtin/clone.c:1170
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "L'opzione --filter è ignorata nei cloni locali; usa file://."
 
-#: builtin/clone.c:1169
+#: builtin/clone.c:1173
 msgid "source repository is shallow, ignoring --local"
 msgstr "il repository sorgente è shallow, ignoro l'opzione --local"
 
-#: builtin/clone.c:1174
+#: builtin/clone.c:1178
 msgid "--local is ignored"
 msgstr "l'opzione --local è ignorata"
 
-#: builtin/clone.c:1249 builtin/clone.c:1257
+#: builtin/clone.c:1262 builtin/clone.c:1270
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Il branch remoto %s non è stato trovato nell'upstream %s"
 
-#: builtin/clone.c:1260
+#: builtin/clone.c:1273
 msgid "You appear to have cloned an empty repository."
 msgstr "Sembra che tu abbia clonato un repository vuoto."
 
@@ -12627,14 +12729,14 @@
 msgid "--command must be the first argument"
 msgstr "--command deve essere il primo argomento"
 
-#: builtin/commit-graph.c:11 builtin/commit-graph.c:19
+#: builtin/commit-graph.c:13 builtin/commit-graph.c:21
 msgid ""
 "git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
 msgstr ""
 "git commit-graph verify [--object-dir <directory oggetti>] [--shallow] [--"
 "[no-]progress]"
 
-#: builtin/commit-graph.c:12 builtin/commit-graph.c:24
+#: builtin/commit-graph.c:14 builtin/commit-graph.c:26
 msgid ""
 "git commit-graph write [--object-dir <objdir>] [--append] [--"
 "split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
@@ -12644,80 +12746,89 @@
 "split[=<strategia>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
 "paths] [--[no-]progress] <opzioni split>"
 
-#: builtin/commit-graph.c:60
+#: builtin/commit-graph.c:62
 #, c-format
 msgid "could not find object directory matching %s"
 msgstr "impossibile trovare la directory oggetti corrispondente a %s"
 
-#: builtin/commit-graph.c:76 builtin/commit-graph.c:152
-#: builtin/commit-graph.c:257 builtin/fetch.c:180 builtin/log.c:1678
+#: builtin/commit-graph.c:78 builtin/commit-graph.c:177
+#: builtin/commit-graph.c:276 builtin/fetch.c:180 builtin/log.c:1678
 msgid "dir"
 msgstr "directory"
 
-#: builtin/commit-graph.c:77 builtin/commit-graph.c:153
-#: builtin/commit-graph.c:258
+#: builtin/commit-graph.c:79 builtin/commit-graph.c:178
+#: builtin/commit-graph.c:277
 msgid "The object directory to store the graph"
 msgstr "La directory oggetti in cui memorizzare il grafo"
 
-#: builtin/commit-graph.c:79
+#: builtin/commit-graph.c:81
 msgid "if the commit-graph is split, only verify the tip file"
 msgstr "se il grafo dei commit è diviso, verifica solo l'ultimo file"
 
-#: builtin/commit-graph.c:102
+#: builtin/commit-graph.c:104
 #, c-format
 msgid "Could not open commit-graph '%s'"
 msgstr "Impossibile aprire il grafo dei commit '%s'"
 
-#: builtin/commit-graph.c:136
+#: builtin/commit-graph.c:138
 #, c-format
 msgid "unrecognized --split argument, %s"
 msgstr "argomento --split non riconosciuto, %s"
 
-#: builtin/commit-graph.c:155
+#: builtin/commit-graph.c:151
+#, c-format
+msgid "unexpected non-hex object ID: %s"
+msgstr "ID oggetto non esadecimale inatteso: %s"
+
+#: builtin/commit-graph.c:156
+#, c-format
+msgid "invalid object: %s"
+msgstr "oggetto non valido: %s"
+
+#: builtin/commit-graph.c:180
 msgid "start walk at all refs"
 msgstr "inizia la visita da tutti i riferimenti"
 
-#: builtin/commit-graph.c:157
+#: builtin/commit-graph.c:182
 msgid "scan pack-indexes listed by stdin for commits"
 msgstr ""
 "esamina i pack-index elencati sullo standard input alla ricerca di commit"
 
-#: builtin/commit-graph.c:159
+#: builtin/commit-graph.c:184
 msgid "start walk at commits listed by stdin"
 msgstr "inizia la visita ai commit elencati sullo standard input"
 
-#: builtin/commit-graph.c:161
+#: builtin/commit-graph.c:186
 msgid "include all commits already in the commit-graph file"
 msgstr "includi tutti i commit già presenti nel file commit-graph"
 
-#: builtin/commit-graph.c:163
+#: builtin/commit-graph.c:188
 msgid "enable computation for changed paths"
 msgstr "abilita calcolo percorsi modificati"
 
-#: builtin/commit-graph.c:166
+#: builtin/commit-graph.c:191
 msgid "allow writing an incremental commit-graph file"
 msgstr "consenti la scrittura di un file grafo dei commit incrementale"
 
-#: builtin/commit-graph.c:170
+#: builtin/commit-graph.c:195
 msgid "maximum number of commits in a non-base split commit-graph"
 msgstr "numero massimo di commit in un grafo dei commit diviso non di base"
 
-#: builtin/commit-graph.c:172
+#: builtin/commit-graph.c:197
 msgid "maximum ratio between two levels of a split commit-graph"
 msgstr "rapporto massimo fra due livelli di un grafo dei commit diviso"
 
-#: builtin/commit-graph.c:174
+#: builtin/commit-graph.c:199
 msgid "only expire files older than a given date-time"
 msgstr "fai scadere solo i file più vecchi di una determinata data e ora"
 
-#: builtin/commit-graph.c:190
+#: builtin/commit-graph.c:215
 msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
 msgstr "usa al più un'opzione fra --reachable, --stdin-commits o --stdin-packs"
 
-#: builtin/commit-graph.c:229
-#, c-format
-msgid "unexpected non-hex object ID: %s"
-msgstr "ID oggetto non esadecimale inatteso: %s"
+#: builtin/commit-graph.c:245
+msgid "Collecting commits from input"
+msgstr "Raccolta dei commit dall'input in corso"
 
 #: builtin/commit-tree.c:18
 msgid ""
@@ -13124,7 +13235,7 @@
 msgstr "versione"
 
 #: builtin/commit.c:1376 builtin/commit.c:1535 builtin/push.c:549
-#: builtin/worktree.c:646
+#: builtin/worktree.c:722
 msgid "machine-readable output"
 msgstr "output leggibile da una macchina"
 
@@ -13137,8 +13248,8 @@
 msgstr "termina le voci con NUL"
 
 #: builtin/commit.c:1384 builtin/commit.c:1388 builtin/commit.c:1543
-#: builtin/fast-export.c:1153 builtin/fast-export.c:1156
-#: builtin/fast-export.c:1159 builtin/rebase.c:1392 parse-options.h:336
+#: builtin/fast-export.c:1199 builtin/fast-export.c:1202
+#: builtin/fast-export.c:1205 builtin/rebase.c:1392 parse-options.h:336
 msgid "mode"
 msgstr "modo"
 
@@ -13842,35 +13953,45 @@
 msgid "--broken is incompatible with commit-ishes"
 msgstr "--broken non è compatibile con le espressioni commit"
 
-#: builtin/diff.c:84
+#: builtin/diff.c:91
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s': non è un file regolare o un collegamento simbolico"
 
-#: builtin/diff.c:235
+#: builtin/diff.c:242
 #, c-format
 msgid "invalid option: %s"
 msgstr "opzione non valida: %s"
 
-#: builtin/diff.c:350
+#: builtin/diff.c:359
+#, c-format
+msgid "%s...%s: no merge base"
+msgstr "%s...%s: non esiste una base per il merge"
+
+#: builtin/diff.c:469
 msgid "Not a git repository"
 msgstr "Non è un repository Git"
 
-#: builtin/diff.c:394
+#: builtin/diff.c:514
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "specificato oggetto non valido '%s'."
 
-#: builtin/diff.c:403
+#: builtin/diff.c:525
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "più di due blob specificati: '%s'"
 
-#: builtin/diff.c:408
+#: builtin/diff.c:530
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "specificato oggetto non gestito '%s'."
 
+#: builtin/diff.c:564
+#, c-format
+msgid "%s...%s: multiple merge bases, using %s"
+msgstr "%s...%s: esistono più basi per il merge, utilizzo %s"
+
 #: builtin/difftool.c:30
 msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
 msgstr "git difftool [<opzioni>] [<commit> [<commit>]] [--] [<percorso>...]"
@@ -14024,88 +14145,109 @@
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [opzioni-elenco-rev]"
 
-#: builtin/fast-export.c:853
+#: builtin/fast-export.c:868
 msgid "Error: Cannot export nested tags unless --mark-tags is specified."
 msgstr ""
 "Errore: Impossibile esportare i tag nidificati a meno che non sia "
 "specificata l'opzione --mark-tags."
 
-#: builtin/fast-export.c:1152
+#: builtin/fast-export.c:1178
+msgid "--anonymize-map token cannot be empty"
+msgstr "il token --anonymize-map non può essere vuoto"
+
+#: builtin/fast-export.c:1198
 msgid "show progress after <n> objects"
 msgstr "visualizza l'avanzamento dopo <n> oggetti"
 
-#: builtin/fast-export.c:1154
+#: builtin/fast-export.c:1200
 msgid "select handling of signed tags"
 msgstr "seleziona la gestione dei tag firmati"
 
-#: builtin/fast-export.c:1157
+#: builtin/fast-export.c:1203
 msgid "select handling of tags that tag filtered objects"
 msgstr "seleziona la gestione dei tag che contrassegnano oggetti filtrati"
 
-#: builtin/fast-export.c:1160
+#: builtin/fast-export.c:1206
 msgid "select handling of commit messages in an alternate encoding"
 msgstr ""
 "seleziona la gestione dei messaggi di commit in una codifica alternativa"
 
-#: builtin/fast-export.c:1163
+#: builtin/fast-export.c:1209
 msgid "Dump marks to this file"
 msgstr "Esegui il dump dei contrassegni in questo file"
 
-#: builtin/fast-export.c:1165
+#: builtin/fast-export.c:1211
 msgid "Import marks from this file"
 msgstr "Importa i contrassegni da questo file"
 
-#: builtin/fast-export.c:1169
+#: builtin/fast-export.c:1215
 msgid "Import marks from this file if it exists"
 msgstr "Importa i contrassegni da questo file se esiste"
 
-#: builtin/fast-export.c:1171
+#: builtin/fast-export.c:1217
 msgid "Fake a tagger when tags lack one"
 msgstr "Usa un tagger falso se i tag non ne hanno uno"
 
-#: builtin/fast-export.c:1173
+#: builtin/fast-export.c:1219
 msgid "Output full tree for each commit"
 msgstr "Visualizza in output l'albero completo per ogni commit"
 
-#: builtin/fast-export.c:1175
+#: builtin/fast-export.c:1221
 msgid "Use the done feature to terminate the stream"
 msgstr "Usa la funzionalità \"fatto\" per terminare il flusso"
 
-#: builtin/fast-export.c:1176
+#: builtin/fast-export.c:1222
 msgid "Skip output of blob data"
 msgstr "Ometti l'output dei dati dei blob"
 
-#: builtin/fast-export.c:1177 builtin/log.c:1724
+#: builtin/fast-export.c:1223 builtin/log.c:1724
 msgid "refspec"
 msgstr "specificatore riferimento"
 
-#: builtin/fast-export.c:1178
+#: builtin/fast-export.c:1224
 msgid "Apply refspec to exported refs"
 msgstr "Applica lo specificatore riferimento ai riferimenti esportati"
 
-#: builtin/fast-export.c:1179
+#: builtin/fast-export.c:1225
 msgid "anonymize output"
 msgstr "rendi anonimo l'output"
 
-#: builtin/fast-export.c:1181
+#: builtin/fast-export.c:1226
+msgid "from:to"
+msgstr "da:a"
+
+#: builtin/fast-export.c:1227
+msgid "convert <from> to <to> in anonymized output"
+msgstr "converte <da> ad <a> nell'output in forma anonima"
+
+#: builtin/fast-export.c:1230
 msgid "Reference parents which are not in fast-export stream by object id"
 msgstr ""
 "Fai riferimento ai genitori non nel flusso fast-export tramite l'ID oggetto"
 
-#: builtin/fast-export.c:1183
+#: builtin/fast-export.c:1232
 msgid "Show original object ids of blobs/commits"
 msgstr "Visualizza gli ID oggetto originari dei blob/commit"
 
-#: builtin/fast-export.c:1185
+#: builtin/fast-export.c:1234
 msgid "Label tags with mark ids"
 msgstr "Etichetta i tag con ID contrassegno"
 
-#: builtin/fast-export.c:1220
+#: builtin/fast-export.c:1257
+msgid "--anonymize-map without --anonymize does not make sense"
+msgstr "--anonymize-map senza --anonymize non ha senso"
+
+#: builtin/fast-export.c:1272
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
 msgstr ""
 "Impossibile fornire entrambe le opzioni --import-marks e --import-marks-if-"
 "exists"
 
+#: builtin/fetch-pack.c:245
+#, c-format
+msgid "Lockfile created but not reported: %s"
+msgstr "File di lock creato ma non segnalato: %s"
+
 #: builtin/fetch.c:35
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<opzioni>] [<repository> [<specificatore riferimento>...]]"
@@ -14436,41 +14578,41 @@
 msgid "You need to specify a tag name."
 msgstr "Devi specificare il nome di un tag."
 
-#: builtin/fetch.c:1773
+#: builtin/fetch.c:1778
 msgid "Negative depth in --deepen is not supported"
 msgstr "Le profondità negative in --deepen non sono supportate"
 
-#: builtin/fetch.c:1775
+#: builtin/fetch.c:1780
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "le opzioni --deepen e --depth sono mutualmente esclusive"
 
-#: builtin/fetch.c:1780
+#: builtin/fetch.c:1785
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth e --unshallow non possono essere usati insieme."
 
-#: builtin/fetch.c:1782
+#: builtin/fetch.c:1787
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow su un repository completo non ha senso"
 
-#: builtin/fetch.c:1798
+#: builtin/fetch.c:1800
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all non richiede un repository come argomento"
 
-#: builtin/fetch.c:1800
+#: builtin/fetch.c:1802
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all non ha senso con degli specificatori riferimento"
 
-#: builtin/fetch.c:1809
+#: builtin/fetch.c:1811
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Remoto o gruppo remoti non esistente: %s"
 
-#: builtin/fetch.c:1816
+#: builtin/fetch.c:1818
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr ""
 "Recuperare un gruppo e specificare gli specificatori riferimento non ha senso"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1836
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14933,8 +15075,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1730
-#: builtin/pack-objects.c:2855
+#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1727
+#: builtin/pack-objects.c:2904
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "non vi è supporto per i thread, ignoro %s"
@@ -15168,11 +15310,11 @@
 msgid "invalid option combination, ignoring --threads"
 msgstr "combinazione di opzioni non valida, ignoro --threads"
 
-#: builtin/grep.c:1084 builtin/pack-objects.c:3548
+#: builtin/grep.c:1084 builtin/pack-objects.c:3623
 msgid "no threads support, ignoring --threads"
 msgstr "non vi è supporto per i thread, ignoro --threads"
 
-#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2852
+#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2901
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "specificato numero non valido di thread (%d)"
@@ -15375,7 +15517,7 @@
 msgid "used more bytes than were available"
 msgstr "usati più byte di quelli disponibili"
 
-#: builtin/index-pack.c:288 builtin/pack-objects.c:607
+#: builtin/index-pack.c:288 builtin/pack-objects.c:618
 msgid "pack too large for current definition of off_t"
 msgstr "pack troppo largo per la definizione corrente di off_t"
 
@@ -15446,8 +15588,8 @@
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "TROVATA COLLISIONE SHA1 CON %s !"
 
-#: builtin/index-pack.c:738 builtin/pack-objects.c:159
-#: builtin/pack-objects.c:219 builtin/pack-objects.c:314
+#: builtin/index-pack.c:738 builtin/pack-objects.c:170
+#: builtin/pack-objects.c:230 builtin/pack-objects.c:325
 #, c-format
 msgid "unable to read %s"
 msgstr "impossibile leggere %s"
@@ -15508,7 +15650,7 @@
 msgid "Resolving deltas"
 msgstr "Risoluzione dei delta"
 
-#: builtin/index-pack.c:1208 builtin/pack-objects.c:2616
+#: builtin/index-pack.c:1208 builtin/pack-objects.c:2665
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "impossibile creare il thread: %s"
@@ -15573,58 +15715,67 @@
 msgid "cannot store index file"
 msgstr "impossibile archiviare index file"
 
-#: builtin/index-pack.c:1528 builtin/pack-objects.c:2863
+#: builtin/index-pack.c:1528 builtin/pack-objects.c:2912
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "pack.indexversion=%<PRIu32> non valida"
 
-#: builtin/index-pack.c:1596
+#: builtin/index-pack.c:1592
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Impossibile aprire il file pack '%s' esistente"
 
-#: builtin/index-pack.c:1598
+#: builtin/index-pack.c:1594
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "Impossibile aprire il file pack idx esistente per '%s'"
 
-#: builtin/index-pack.c:1646
+#: builtin/index-pack.c:1642
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "non delta: %d oggetto"
 msgstr[1] "non delta: %d oggetti"
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "lunghezza della catena = %d: %lu oggetto"
 msgstr[1] "lunghezza della catena = %d: %lu oggetti"
 
-#: builtin/index-pack.c:1692
+#: builtin/index-pack.c:1689
 msgid "Cannot come back to cwd"
 msgstr "impossibile tornare alla directory di lavoro corrente"
 
-#: builtin/index-pack.c:1741 builtin/index-pack.c:1744
-#: builtin/index-pack.c:1760 builtin/index-pack.c:1764
+#: builtin/index-pack.c:1738 builtin/index-pack.c:1741
+#: builtin/index-pack.c:1757 builtin/index-pack.c:1761
 #, c-format
 msgid "bad %s"
 msgstr "%s errato"
 
-#: builtin/index-pack.c:1780
+#: builtin/index-pack.c:1767 builtin/init-db.c:392 builtin/init-db.c:621
+#, c-format
+msgid "unknown hash algorithm '%s'"
+msgstr "algoritmo hash '%s' sconosciuto"
+
+#: builtin/index-pack.c:1782
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin non può essere usato senza --stdin"
 
-#: builtin/index-pack.c:1782
+#: builtin/index-pack.c:1784
 msgid "--stdin requires a git repository"
 msgstr "--stdin richiede un repository Git"
 
-#: builtin/index-pack.c:1788
+#: builtin/index-pack.c:1786
+msgid "--object-format cannot be used with --stdin"
+msgstr "--object-format non può essere usato con --stdin"
+
+#: builtin/index-pack.c:1792
 msgid "--verify with no packfile name given"
 msgstr "--verify senza un nome del file pack specificato"
 
-#: builtin/index-pack.c:1836 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1840 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "errore fsck negli oggetti sottoposti a pack"
 
@@ -15668,51 +15819,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "non copio i modelli da '%s': %s"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:276
+#, c-format
+msgid "invalid initial branch name: '%s'"
+msgstr "nome branch iniziale non valido: '%s'"
+
+#: builtin/init-db.c:368
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "impossibile gestire il tipo di file %d"
 
-#: builtin/init-db.c:359
+#: builtin/init-db.c:371
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "impossibile spostare %s in %s"
 
-#: builtin/init-db.c:374
+#: builtin/init-db.c:386
 msgid "attempt to reinitialize repository with different hash"
 msgstr "tentativo di reinizializzare il repository con un hash differente"
 
-#: builtin/init-db.c:380 builtin/init-db.c:601
-#, c-format
-msgid "unknown hash algorithm '%s'"
-msgstr "algoritmo hash '%s' sconosciuto"
-
-#: builtin/init-db.c:397 builtin/init-db.c:400
+#: builtin/init-db.c:410 builtin/init-db.c:413
 #, c-format
 msgid "%s already exists"
 msgstr "%s esiste già"
 
-#: builtin/init-db.c:458
+#: builtin/init-db.c:444
+#, c-format
+msgid "re-init: ignored --initial-branch=%s"
+msgstr "re-init: opzione --initial-branch=%s ignorata"
+
+#: builtin/init-db.c:475
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "Reinizializzato repository Git condiviso esistente in %s%s\n"
 
-#: builtin/init-db.c:459
+#: builtin/init-db.c:476
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "Reinizializzato repository Git esistente in %s%s\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:480
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "Inizializzato repository Git condiviso vuoto in %s%s\n"
 
-#: builtin/init-db.c:464
+#: builtin/init-db.c:481
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "Inizializzato repository Git vuoto in %s%s\n"
 
-#: builtin/init-db.c:513
+#: builtin/init-db.c:530
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -15720,33 +15876,37 @@
 "git init [-q | --quiet] [--bare] [--template=<directory-modello>] [--"
 "shared[=<permessi>]] [<directory>]"
 
-#: builtin/init-db.c:538
+#: builtin/init-db.c:556
 msgid "permissions"
 msgstr "permessi"
 
-#: builtin/init-db.c:539
+#: builtin/init-db.c:557
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "specifica che il repository Git deve essere condiviso con più utenti"
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:563
+msgid "override the name of the initial branch"
+msgstr "esegui l'override del nome del branch iniziale"
+
+#: builtin/init-db.c:564
 msgid "hash"
 msgstr "hash"
 
-#: builtin/init-db.c:545
+#: builtin/init-db.c:565 builtin/show-index.c:22
 msgid "specify the hash algorithm to use"
 msgstr "specifica l'algoritmo hash da usare"
 
-#: builtin/init-db.c:578 builtin/init-db.c:583
+#: builtin/init-db.c:598 builtin/init-db.c:603
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "impossibile creare la directory %s"
 
-#: builtin/init-db.c:587
+#: builtin/init-db.c:607
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "impossibile modificare la directory corrente in %s"
 
-#: builtin/init-db.c:614
+#: builtin/init-db.c:634
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -15755,7 +15915,7 @@
 "%s (o --work-tree=<directory>) non consentito senza specificare %s (o --git-"
 "dir=<directory>)"
 
-#: builtin/init-db.c:642
+#: builtin/init-db.c:662
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "Impossibile accedere all'albero di lavoro '%s'"
@@ -17533,7 +17693,7 @@
 msgid "read object names from the standard input"
 msgstr "leggi i nomi degli oggetti dallo standard input"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:164
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
 msgid "do not remove, show only"
 msgstr "non rimuovere, limitati a visualizzare"
 
@@ -17568,106 +17728,122 @@
 "git pack-objects [<opzioni>...] <nome base> [< <elenco riferimenti> | < "
 "<elenco oggetti>]"
 
-#: builtin/pack-objects.c:431
+#: builtin/pack-objects.c:442
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "CRC oggetto sottoposto a pack %s errato"
 
-#: builtin/pack-objects.c:442
+#: builtin/pack-objects.c:453
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "oggetto sottoposto a pack %s corrotto"
 
-#: builtin/pack-objects.c:573
+#: builtin/pack-objects.c:584
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "rilevato delta ricorsivo per l'oggetto %s"
 
-#: builtin/pack-objects.c:784
+#: builtin/pack-objects.c:795
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "%u oggetti ordinati, attesi %<PRIu32>"
 
-#: builtin/pack-objects.c:973
+#: builtin/pack-objects.c:1003
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 "disabilito la scrittura delle bitmap, i pack sono divisi a causa "
 "dell'impostazione pack.packSizeLimit"
 
-#: builtin/pack-objects.c:986
+#: builtin/pack-objects.c:1016
 msgid "Writing objects"
 msgstr "Scrittura degli oggetti in corso"
 
-#: builtin/pack-objects.c:1047 builtin/update-index.c:90
+#: builtin/pack-objects.c:1077 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "stat di %s non riuscito"
 
-#: builtin/pack-objects.c:1100
+#: builtin/pack-objects.c:1130
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "scritti %<PRIu32> oggetti quando me ne attendevo %<PRIu32>"
 
-#: builtin/pack-objects.c:1298
+#: builtin/pack-objects.c:1347
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
 "disabilito la scrittura delle bitmap perché alcuni oggetti non saranno "
 "sottoposti a pack"
 
-#: builtin/pack-objects.c:1725
+#: builtin/pack-objects.c:1774
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "overflow dell'offset base del delta nel pack per %s"
 
-#: builtin/pack-objects.c:1734
+#: builtin/pack-objects.c:1783
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "offset base del delta fuori dall'intervallo consentito per %s"
 
-#: builtin/pack-objects.c:2005
+#: builtin/pack-objects.c:2054
 msgid "Counting objects"
 msgstr "Conteggio degli oggetti in corso"
 
-#: builtin/pack-objects.c:2150
+#: builtin/pack-objects.c:2199
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "impossibile analizzare l'intestazione oggetto di %s"
 
-#: builtin/pack-objects.c:2220 builtin/pack-objects.c:2236
-#: builtin/pack-objects.c:2246
+#: builtin/pack-objects.c:2269 builtin/pack-objects.c:2285
+#: builtin/pack-objects.c:2295
 #, c-format
 msgid "object %s cannot be read"
 msgstr "impossibile leggere l'oggetto %s"
 
-#: builtin/pack-objects.c:2223 builtin/pack-objects.c:2250
+#: builtin/pack-objects.c:2272 builtin/pack-objects.c:2299
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr ""
 "oggetto %s: lunghezza oggetto inconsistente (%<PRIuMAX> contro %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2260
+#: builtin/pack-objects.c:2309
 msgid "suboptimal pack - out of memory"
 msgstr "pack subottimo - memoria esaurita"
 
-#: builtin/pack-objects.c:2575
+#: builtin/pack-objects.c:2624
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Compressione delta in corso, uso fino a %d thread"
 
-#: builtin/pack-objects.c:2714
+#: builtin/pack-objects.c:2763
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "impossibile eseguire il pack degli oggetti raggiungibili dal tag %s"
 
-#: builtin/pack-objects.c:2802
+#: builtin/pack-objects.c:2851
 msgid "Compressing objects"
 msgstr "Compressione oggetti in corso"
 
-#: builtin/pack-objects.c:2808
+#: builtin/pack-objects.c:2857
 msgid "inconsistency with delta count"
 msgstr "inconsistenza con il numero dei delta"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2929
+#, c-format
+msgid ""
+"value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
+"hash> <uri>' (got '%s')"
+msgstr ""
+"il valore di uploadpack.blobpackfileuri dev'essere nella forma '<hash oggetto"
+"> <hash pack> <URI>' (ricevuto '%s')"
+
+#: builtin/pack-objects.c:2932
+#, c-format
+msgid ""
+"object already configured in another uploadpack.blobpackfileuri (got '%s')"
+msgstr ""
+"oggetto già configurato in un altro uploadpack.blobpackfileuri (ricevuto '%s')"
+
+#: builtin/pack-objects.c:2961
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -17676,7 +17852,7 @@
 "atteso ID oggetto arco, ricevuti dati errati:\n"
 " %s"
 
-#: builtin/pack-objects.c:2895
+#: builtin/pack-objects.c:2967
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -17685,234 +17861,243 @@
 "atteso ID oggetto, ricevuti dati errati:\n"
 " %s"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3065
 msgid "invalid value for --missing"
 msgstr "valore non valido per --missing"
 
-#: builtin/pack-objects.c:3052 builtin/pack-objects.c:3160
+#: builtin/pack-objects.c:3124 builtin/pack-objects.c:3232
 msgid "cannot open pack index"
 msgstr "impossibile aprire l'indice pack"
 
-#: builtin/pack-objects.c:3083
+#: builtin/pack-objects.c:3155
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "impossibile esaminare l'oggetto sciolto %s"
 
-#: builtin/pack-objects.c:3168
+#: builtin/pack-objects.c:3240
 msgid "unable to force loose object"
 msgstr "impossibile forzare l'oggetto sciolto"
 
-#: builtin/pack-objects.c:3261
+#: builtin/pack-objects.c:3333
 #, c-format
 msgid "not a rev '%s'"
 msgstr "'%s' non è una revisione"
 
-#: builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3336
 #, c-format
 msgid "bad revision '%s'"
 msgstr "revisione '%s' errata"
 
-#: builtin/pack-objects.c:3289
+#: builtin/pack-objects.c:3361
 msgid "unable to add recent objects"
 msgstr "impossibile aggiungere gli oggetti recenti"
 
-#: builtin/pack-objects.c:3342
+#: builtin/pack-objects.c:3414
 #, c-format
 msgid "unsupported index version %s"
 msgstr "versione %s di index non supportata"
 
-#: builtin/pack-objects.c:3346
+#: builtin/pack-objects.c:3418
 #, c-format
 msgid "bad index version '%s'"
 msgstr "versione '%s' di index errata"
 
-#: builtin/pack-objects.c:3384
+#: builtin/pack-objects.c:3456
 msgid "<version>[,<offset>]"
 msgstr "<versione>[,<offset>]"
 
-#: builtin/pack-objects.c:3385
+#: builtin/pack-objects.c:3457
 msgid "write the pack index file in the specified idx format version"
 msgstr "scrivi il file indice pack usando la versione formato idx specificata"
 
-#: builtin/pack-objects.c:3388
+#: builtin/pack-objects.c:3460
 msgid "maximum size of each output pack file"
 msgstr "dimensione massima di ogni file pack in output"
 
-#: builtin/pack-objects.c:3390
+#: builtin/pack-objects.c:3462
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignora gli oggetti presi in prestito dallo store oggetti alternativo"
 
-#: builtin/pack-objects.c:3392
+#: builtin/pack-objects.c:3464
 msgid "ignore packed objects"
 msgstr "ignora gli oggetti sottoposti a pack"
 
-#: builtin/pack-objects.c:3394
+#: builtin/pack-objects.c:3466
 msgid "limit pack window by objects"
 msgstr "limita la finestra di pack al numero di oggetti specificato"
 
-#: builtin/pack-objects.c:3396
+#: builtin/pack-objects.c:3468
 msgid "limit pack window by memory in addition to object limit"
 msgstr ""
 "limita la finestra di pack alla memoria specificata in aggiunta al limite "
 "sugli oggetti"
 
-#: builtin/pack-objects.c:3398
+#: builtin/pack-objects.c:3470
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "lunghezza massima della catena di delta consentita nel pack risultante"
 
-#: builtin/pack-objects.c:3400
+#: builtin/pack-objects.c:3472
 msgid "reuse existing deltas"
 msgstr "riusa i delta esistenti"
 
-#: builtin/pack-objects.c:3402
+#: builtin/pack-objects.c:3474
 msgid "reuse existing objects"
 msgstr "riusa gli oggetti esistenti"
 
-#: builtin/pack-objects.c:3404
+#: builtin/pack-objects.c:3476
 msgid "use OFS_DELTA objects"
 msgstr "usa oggetti OFS_DELTA"
 
-#: builtin/pack-objects.c:3406
+#: builtin/pack-objects.c:3478
 msgid "use threads when searching for best delta matches"
 msgstr ""
 "usa più thread durante la ricerca delle migliori corrispondenze per i delta"
 
-#: builtin/pack-objects.c:3408
+#: builtin/pack-objects.c:3480
 msgid "do not create an empty pack output"
 msgstr "non creare un output pack vuoto"
 
-#: builtin/pack-objects.c:3410
+#: builtin/pack-objects.c:3482
 msgid "read revision arguments from standard input"
 msgstr "leggi gli argomenti revisione dallo standard input"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3484
 msgid "limit the objects to those that are not yet packed"
 msgstr "limita gli oggetti a quelli non ancora sottoposti a pack"
 
-#: builtin/pack-objects.c:3415
+#: builtin/pack-objects.c:3487
 msgid "include objects reachable from any reference"
 msgstr "includi gli oggetti raggiungibili da qualunque riferimento"
 
-#: builtin/pack-objects.c:3418
+#: builtin/pack-objects.c:3490
 msgid "include objects referred by reflog entries"
 msgstr "includi gli oggetti referenziati da voci del log riferimenti"
 
-#: builtin/pack-objects.c:3421
+#: builtin/pack-objects.c:3493
 msgid "include objects referred to by the index"
 msgstr "includi gli oggetti referenziati dall'indice"
 
-#: builtin/pack-objects.c:3424
+#: builtin/pack-objects.c:3496
 msgid "output pack to stdout"
 msgstr "invia il pack in output sullo standard output"
 
-#: builtin/pack-objects.c:3426
+#: builtin/pack-objects.c:3498
 msgid "include tag objects that refer to objects to be packed"
 msgstr ""
 "includi gli oggetti tag che fanno riferimento agli oggetti da sottoporre a "
 "pack"
 
-#: builtin/pack-objects.c:3428
+#: builtin/pack-objects.c:3500
 msgid "keep unreachable objects"
 msgstr "mantieni gli oggetti non raggiungibili"
 
-#: builtin/pack-objects.c:3430
+#: builtin/pack-objects.c:3502
 msgid "pack loose unreachable objects"
 msgstr "esegui il pack degli oggetti non raggiungibili sciolti"
 
-#: builtin/pack-objects.c:3432
+#: builtin/pack-objects.c:3504
 msgid "unpack unreachable objects newer than <time>"
 msgstr "decomprimi gli oggetti non raggiungibili più recenti di <tempo>"
 
-#: builtin/pack-objects.c:3435
+#: builtin/pack-objects.c:3507
 msgid "use the sparse reachability algorithm"
 msgstr "usa l'algoritmo di raggiungibilità sparse"
 
-#: builtin/pack-objects.c:3437
+#: builtin/pack-objects.c:3509
 msgid "create thin packs"
 msgstr "crea pack thin"
 
-#: builtin/pack-objects.c:3439
+#: builtin/pack-objects.c:3511
 msgid "create packs suitable for shallow fetches"
 msgstr "crea pack adatti per fetch shallow"
 
-#: builtin/pack-objects.c:3441
+#: builtin/pack-objects.c:3513
 msgid "ignore packs that have companion .keep file"
 msgstr "ignora i pack che hanno un file .keep che li accompagna"
 
-#: builtin/pack-objects.c:3443
+#: builtin/pack-objects.c:3515
 msgid "ignore this pack"
 msgstr "ignora questo pack"
 
-#: builtin/pack-objects.c:3445
+#: builtin/pack-objects.c:3517
 msgid "pack compression level"
 msgstr "livello compressione pack"
 
-#: builtin/pack-objects.c:3447
+#: builtin/pack-objects.c:3519
 msgid "do not hide commits by grafts"
 msgstr "non nascondere i commit innestati"
 
-#: builtin/pack-objects.c:3449
+#: builtin/pack-objects.c:3521
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 "usa un indice bitmap se disponibile per velocizzare il conteggio degli "
 "oggetti"
 
-#: builtin/pack-objects.c:3451
+#: builtin/pack-objects.c:3523
 msgid "write a bitmap index together with the pack index"
 msgstr "scrivi un indice bitmap insieme all'indice pack"
 
-#: builtin/pack-objects.c:3455
+#: builtin/pack-objects.c:3527
 msgid "write a bitmap index if possible"
 msgstr "scrivi un indice bitmap se possibile"
 
-#: builtin/pack-objects.c:3459
+#: builtin/pack-objects.c:3531
 msgid "handling for missing objects"
 msgstr "azione da eseguire sugli oggetti mancanti"
 
-#: builtin/pack-objects.c:3462
+#: builtin/pack-objects.c:3534
 msgid "do not pack objects in promisor packfiles"
 msgstr "non eseguire il pack degli oggetti nei file pack promettenti"
 
-#: builtin/pack-objects.c:3464
+#: builtin/pack-objects.c:3536
 msgid "respect islands during delta compression"
 msgstr "rispetta le isole durante la compressione delta"
 
-#: builtin/pack-objects.c:3493
+#: builtin/pack-objects.c:3538
+msgid "protocol"
+msgstr "protocollo"
+
+#: builtin/pack-objects.c:3539
+msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
+msgstr ""
+"escludi tutti gli uploadpack.blobpackfileuri configurati con questo protocollo"
+
+#: builtin/pack-objects.c:3568
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "la profondità della catena dei delta (%d) è troppo elevata, forzo %d"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3573
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "il valore pack.deltaCacheLimit è troppo elevato, forzo %d"
 
-#: builtin/pack-objects.c:3552
+#: builtin/pack-objects.c:3627
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr ""
 "--max-pack-size non può essere usato per generare un pack da trasferire"
 
-#: builtin/pack-objects.c:3554
+#: builtin/pack-objects.c:3629
 msgid "minimum pack size limit is 1 MiB"
 msgstr "il limite minimo delle dimensioni dei pack è 1 MiB"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3634
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin non può essere usato per generare un pack indicizzabile"
 
-#: builtin/pack-objects.c:3562
+#: builtin/pack-objects.c:3637
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable e --unpack-unreachable non sono compatibili"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3643
 msgid "cannot use --filter without --stdout"
 msgstr "impossibile usare --filter senza --stdout"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3703
 msgid "Enumerating objects"
 msgstr "Enumerazione degli oggetti in corso"
 
-#: builtin/pack-objects.c:3658
+#: builtin/pack-objects.c:3734
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -19244,7 +19429,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <directory Git>"
 
-#: builtin/receive-pack.c:843
+#: builtin/receive-pack.c:844
 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"
@@ -19277,7 +19462,7 @@
 "il comportamento predefinito, imposta la variabile di\n"
 "configurazione 'receive.denyCurrentBranch' a 'refuse'."
 
-#: builtin/receive-pack.c:863
+#: builtin/receive-pack.c:864
 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"
@@ -19300,11 +19485,11 @@
 "Per non visualizzare più questo messaggio, puoi impostarla a\n"
 "'refuse'."
 
-#: builtin/receive-pack.c:1960
+#: builtin/receive-pack.c:1970
 msgid "quiet"
 msgstr "non visualizzare messaggi"
 
-#: builtin/receive-pack.c:1974
+#: builtin/receive-pack.c:1984
 msgid "You must specify a directory."
 msgstr "Devi specificare una directory."
 
@@ -20883,6 +21068,14 @@
 msgid "cannot find commit %s (%s)"
 msgstr "impossibile trovare il commit %s (%s)"
 
+#: builtin/show-index.c:21
+msgid "hash-algorithm"
+msgstr "algoritmo hash"
+
+#: builtin/show-index.c:31
+msgid "Unknown hash algorithm"
+msgstr "Algoritmo hash sconosciuto"
+
 #: builtin/show-ref.c:12
 msgid ""
 "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
@@ -20941,50 +21134,55 @@
 "questo albero di lavoro non è sparse (il file sparse-checkout potrebbe non "
 "esistere)"
 
-#: builtin/sparse-checkout.c:212
+#: builtin/sparse-checkout.c:216
 msgid "failed to create directory for sparse-checkout file"
 msgstr "creazione della directory per il file sparse-checkout non riuscita"
 
-#: builtin/sparse-checkout.c:253
+#: builtin/sparse-checkout.c:257
+msgid "unable to upgrade repository format to enable worktreeConfig"
+msgstr ""
+"impossibile aggiornare il formato repository per abilitare worktreeConfig"
+
+#: builtin/sparse-checkout.c:259
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "impostazione dell'opzione extensions.worktreeConfig non riuscita"
 
-#: builtin/sparse-checkout.c:270
+#: builtin/sparse-checkout.c:276
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:289
+#: builtin/sparse-checkout.c:295
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "inizializza il checkout sparse in modalità cone"
 
-#: builtin/sparse-checkout.c:326
+#: builtin/sparse-checkout.c:332
 #, c-format
 msgid "failed to open '%s'"
 msgstr "apertura di '%s' non riuscita"
 
-#: builtin/sparse-checkout.c:383
+#: builtin/sparse-checkout.c:389
 #, c-format
 msgid "could not normalize path %s"
 msgstr "impossibile normalizzare il percorso '%s'"
 
-#: builtin/sparse-checkout.c:395
+#: builtin/sparse-checkout.c:401
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <pattern>)"
 
-#: builtin/sparse-checkout.c:420
+#: builtin/sparse-checkout.c:426
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "impossibile rimuovere le virgolette dalla stringa in stile C '%s'"
 
-#: builtin/sparse-checkout.c:474 builtin/sparse-checkout.c:498
+#: builtin/sparse-checkout.c:480 builtin/sparse-checkout.c:504
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "impossibile caricare i pattern sparse-checkout esistenti"
 
-#: builtin/sparse-checkout.c:543
+#: builtin/sparse-checkout.c:549
 msgid "read patterns from standard in"
 msgstr "leggi i pattern dallo standard input"
 
-#: builtin/sparse-checkout.c:580
+#: builtin/sparse-checkout.c:586
 msgid "error while refreshing working directory"
 msgstr "errore durante l'aggiornamento della directory di lavoro"
 
@@ -21698,12 +21896,40 @@
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <percorso> <nuovo URL>"
 
-#: builtin/submodule--helper.c:2323 git.c:436 git.c:683
+#: builtin/submodule--helper.c:2294
+msgid "set the default tracking branch to master"
+msgstr "imposta il branch tracciato predefinito a master"
+
+#: builtin/submodule--helper.c:2296
+msgid "set the default tracking branch"
+msgstr "imposta il branch tracciato predefinito"
+
+#: builtin/submodule--helper.c:2300
+msgid "git submodule--helper set-branch [-q|--quiet] (-d|--default) <path>"
+msgstr ""
+"git submodule--helper set-branch [-q|--quiet] (-d|--default) <percorso>"
+
+#: builtin/submodule--helper.c:2301
+msgid ""
+"git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
+msgstr ""
+"git submodule--helper set-branch [-q|--quiet] (-b|--branch) <branch> <"
+"percorso>"
+
+#: builtin/submodule--helper.c:2308
+msgid "--branch or --default required"
+msgstr "è richiesto specificare --branch o --default"
+
+#: builtin/submodule--helper.c:2311
+msgid "--branch and --default are mutually exclusive"
+msgstr "le opzioni --branch e --default sono mutualmente esclusive"
+
+#: builtin/submodule--helper.c:2367 git.c:436 git.c:683
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s non supporta --super-prefix"
 
-#: builtin/submodule--helper.c:2329
+#: builtin/submodule--helper.c:2373
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' non è un sottocomando submodule--helper valido"
@@ -22358,205 +22584,197 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <percorso>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:894
+#: builtin/worktree.c:60 builtin/worktree.c:972
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "eliminazione di '%s' non riuscita"
 
-#: builtin/worktree.c:79
-#, c-format
-msgid "Removing worktrees/%s: not a valid directory"
-msgstr "Rimuovo worktrees/%s: non è una directory valida"
-
 #: builtin/worktree.c:85
-#, c-format
-msgid "Removing worktrees/%s: gitdir file does not exist"
-msgstr "Rimuovo worktrees/%s: il file gitdir non esiste"
+msgid "not a valid directory"
+msgstr "directory non valida"
 
-#: builtin/worktree.c:90 builtin/worktree.c:99
-#, c-format
-msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
-msgstr "Rimuovo worktrees/%s: impossibile leggere il file gitdir (%s)"
+#: builtin/worktree.c:91
+msgid "gitdir file does not exist"
+msgstr "il file gitdir non esiste"
 
-#: builtin/worktree.c:109
+#: builtin/worktree.c:96 builtin/worktree.c:105
 #, c-format
-msgid ""
-"Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
-"%<PRIuMAX>)"
-msgstr ""
-"Rimuovo worktrees/%s: letti meno dati del previsto (attesi %<PRIuMAX>byte, "
-"%<PRIuMAX> letti)"
+msgid "unable to read gitdir file (%s)"
+msgstr "impossibile leggere il file gitdir (%s)"
 
-#: builtin/worktree.c:117
+#: builtin/worktree.c:115
 #, c-format
-msgid "Removing worktrees/%s: invalid gitdir file"
-msgstr "Rimuovo worktrees/%s: file gitdir non valido"
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "lettura troppo breve (attesi %<PRIuMAX> byte, letti %<PRIuMAX>)"
 
-#: builtin/worktree.c:126
+#: builtin/worktree.c:123
+msgid "invalid gitdir file"
+msgstr "file gitdir non valido"
+
+#: builtin/worktree.c:131
+msgid "gitdir file points to non-existent location"
+msgstr "il file gitdir punta a un percorso non esistente"
+
+#: builtin/worktree.c:146
 #, c-format
-msgid "Removing worktrees/%s: gitdir file points to non-existent location"
-msgstr "Rimuovo worktrees/%s: il file gitdir punta a un percorso non esistente"
+msgid "Removing %s/%s: %s"
+msgstr "Rimuovo %s/%s: %s"
 
-#: builtin/worktree.c:165
+#: builtin/worktree.c:221
 msgid "report pruned working trees"
 msgstr "segnala gli alberi di lavoro eliminati"
 
-#: builtin/worktree.c:167
+#: builtin/worktree.c:223
 msgid "expire working trees older than <time>"
 msgstr "fai scadere gli alberi di lavoro più vecchi di <tempo>"
 
-#: builtin/worktree.c:234
+#: builtin/worktree.c:293
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' esiste già"
 
-#: builtin/worktree.c:244
+#: builtin/worktree.c:302
 #, c-format
-msgid "unable to re-add worktree '%s'"
-msgstr "impossibile aggiungere nuovamente l'albero di lavoro '%s'"
+msgid "unusable worktree destination '%s'"
+msgstr "destinazione albero di lavoro non utilizzabile: '%s'"
 
-#: builtin/worktree.c:249
+#: builtin/worktree.c:307
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
-"use 'add -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
+"use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
 "'%s' è un albero di lavoro mancante ma bloccato;\n"
-"usa 'add -f -f' per eseguire l'override, o 'unlock' e 'prune' o 'remove' per "
-"rimuoverlo"
+"usa '%s -f -f' per eseguire l'override, o 'unlock' e 'prune' o 'remove' per"
+" rimuoverlo"
 
-#: builtin/worktree.c:251
+#: builtin/worktree.c:309
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
-"use 'add -f' to override, or 'prune' or 'remove' to clear"
+"use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
 "'%s' è un albero di lavoro mancante ma già registrato;\n"
-"usa 'add -f' per eseguire l'override, o 'prune' o 'remove' per rimuoverlo"
+"usa '%s -f' per eseguire l'override, o 'prune' o 'remove' per rimuoverlo"
 
-#: builtin/worktree.c:301
+#: builtin/worktree.c:360
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "impossibile creare la directory di '%s'"
 
-#: builtin/worktree.c:435 builtin/worktree.c:441
+#: builtin/worktree.c:494 builtin/worktree.c:500
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Preparazione dell'albero di lavoro in corso (nuovo branch '%s')"
 
-#: builtin/worktree.c:437
+#: builtin/worktree.c:496
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr ""
 "Preparazione dell'albero di lavoro in corso (reimposto il branch '%s'; era a "
 "%s)"
 
-#: builtin/worktree.c:446
+#: builtin/worktree.c:505
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Preparazione dell'albero di lavoro in corso (checkout di '%s')"
 
-#: builtin/worktree.c:452
+#: builtin/worktree.c:511
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Preparazione dell'albero di lavoro in corso (HEAD scollegato %s)"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:552
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr ""
 "esegui il checkout di <branch> anche se tale operazione è stata eseguita in "
 "un altro albero di lavoro"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:555
 msgid "create a new branch"
 msgstr "crea un nuovo branch"
 
-#: builtin/worktree.c:498
+#: builtin/worktree.c:557
 msgid "create or reset a branch"
 msgstr "crea o reimposta un branch"
 
-#: builtin/worktree.c:500
+#: builtin/worktree.c:559
 msgid "populate the new working tree"
 msgstr "popola il nuovo albero di lavoro"
 
-#: builtin/worktree.c:501
+#: builtin/worktree.c:560
 msgid "keep the new working tree locked"
 msgstr "mantieni bloccato il nuovo albero di lavoro"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:563
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "imposta la modalità tracking (vedi git-branch(1))"
 
-#: builtin/worktree.c:507
+#: builtin/worktree.c:566
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr ""
 "tenta di cercare una corrispondenza fra il nome del nuovo branch e un branch "
 "remoto da tracciare"
 
-#: builtin/worktree.c:515
+#: builtin/worktree.c:574
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "le opzioni -b, -B e --detach sono mutualmente esclusive"
 
-#: builtin/worktree.c:576
+#: builtin/worktree.c:635
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr ""
 "l'opzione --[no-]track può essere usata solo se viene creato un nuovo branch"
 
-#: builtin/worktree.c:676
+#: builtin/worktree.c:755
 msgid "reason for locking"
 msgstr "motivo di blocco"
 
-#: builtin/worktree.c:688 builtin/worktree.c:721 builtin/worktree.c:795
-#: builtin/worktree.c:922
+#: builtin/worktree.c:767 builtin/worktree.c:800 builtin/worktree.c:874
+#: builtin/worktree.c:1000
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' non è un albero di lavoro"
 
-#: builtin/worktree.c:690 builtin/worktree.c:723
+#: builtin/worktree.c:769 builtin/worktree.c:802
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Non è possibile bloccare o sbloccare l'albero di lavoro principale"
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:774
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' è già bloccato per questo motivo: %s"
 
-#: builtin/worktree.c:697
+#: builtin/worktree.c:776
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' è già bloccato"
 
-#: builtin/worktree.c:725
+#: builtin/worktree.c:804
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' non è bloccato"
 
-#: builtin/worktree.c:766
+#: builtin/worktree.c:845
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 "gli alberi di lavoro contenenti sottomoduli non possono essere spostati o "
 "rimossi"
 
-#: builtin/worktree.c:774
+#: builtin/worktree.c:853
 msgid "force move even if worktree is dirty or locked"
 msgstr "forza lo spostamento anche se l'albero di lavoro è sporco o bloccato"
 
-#: builtin/worktree.c:797 builtin/worktree.c:924
+#: builtin/worktree.c:876 builtin/worktree.c:1002
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' è un albero di lavoro principale"
 
-#: builtin/worktree.c:802
+#: builtin/worktree.c:881
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "impossibile determinare il nome destinazione da '%s'"
 
-#: builtin/worktree.c:808
-#, c-format
-msgid "target '%s' already exists"
-msgstr "la destinazione '%s' esiste già"
-
-#: builtin/worktree.c:816
+#: builtin/worktree.c:894
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -22566,7 +22784,7 @@
 "usa 'move -f -f' per eseguirne l'override o sbloccalo prima di eseguire "
 "l'operazione"
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:896
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -22575,37 +22793,37 @@
 "usa 'move -f -f' per eseguirne l'override o sbloccalo prima di eseguire "
 "l'operazione"
 
-#: builtin/worktree.c:821
+#: builtin/worktree.c:899
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "validazione non riuscita, impossibile spostare l'albero di lavoro: %s"
 
-#: builtin/worktree.c:826
+#: builtin/worktree.c:904
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "spostamento di '%s' in '%s' non riuscito"
 
-#: builtin/worktree.c:874
+#: builtin/worktree.c:952
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "esecuzione di 'git status' su '%s' non riuscita"
 
-#: builtin/worktree.c:878
+#: builtin/worktree.c:956
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr ""
 "'%s' contiene file modificati o non tracciati, usa --force per eliminarlo"
 
-#: builtin/worktree.c:883
+#: builtin/worktree.c:961
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "esecuzione di 'git status' su '%s' non riuscita, codice %d"
 
-#: builtin/worktree.c:906
+#: builtin/worktree.c:984
 msgid "force removal even if worktree is dirty or locked"
 msgstr "forza la rimozione anche se l'albero di lavoro è sporco o bloccato"
 
-#: builtin/worktree.c:929
+#: builtin/worktree.c:1007
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -22615,7 +22833,7 @@
 "usa 'remove -f -f' per eseguirne l'override o sbloccalo prima di eseguire "
 "l'operazione"
 
-#: builtin/worktree.c:931
+#: builtin/worktree.c:1009
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -22624,7 +22842,7 @@
 "usa 'remove -f -f' per eseguirne l'override o sbloccalo prima di eseguire "
 "l'operazione"
 
-#: builtin/worktree.c:934
+#: builtin/worktree.c:1012
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "validazione non riuscita, impossibile rimuovere l'albero di lavoro: %s"
@@ -22645,33 +22863,33 @@
 msgid "only useful for debugging"
 msgstr "utile solo per il debug"
 
-#: bugreport.c:14
+#: bugreport.c:15
 msgid "git version:\n"
 msgstr "versione di git:\n"
 
-#: bugreport.c:20
+#: bugreport.c:21
 #, c-format
 msgid "uname() failed with error '%s' (%d)\n"
 msgstr "uname() non riuscita: errore '%s' (%d)\n"
 
-#: bugreport.c:30
+#: bugreport.c:31
 msgid "compiler info: "
 msgstr "informazioni sul compilatore: "
 
-#: bugreport.c:32
+#: bugreport.c:34
 msgid "libc info: "
 msgstr "informazioni su libc: "
 
-#: bugreport.c:74
+#: bugreport.c:80
 msgid "not run from a git repository - no hooks to show\n"
 msgstr ""
 "comando non eseguito da un repository Git - nessun hook da visualizzare\n"
 
-#: bugreport.c:84
+#: bugreport.c:90
 msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
 msgstr "git bugreport [-o|--output-directory <file>] [-s|--suffix <formato>]"
 
-#: bugreport.c:91
+#: bugreport.c:97
 msgid ""
 "Thank you for filling out a Git bug report!\n"
 "Please answer the following questions to help us understand your issue.\n"
@@ -22708,69 +22926,79 @@
 "Rivedi il resto della segnalazione d'errore qui sotto.\n"
 "Puoi eliminare le righe che non desideri condividere.\n"
 
-#: bugreport.c:130
+#: bugreport.c:136
 msgid "specify a destination for the bugreport file"
 msgstr ""
 "specifica una destinazione per il file contenente la segnalazione d'errore"
 
-#: bugreport.c:132
+#: bugreport.c:138
 msgid "specify a strftime format suffix for the filename"
 msgstr "specifica un suffisso in formato strftime per il nome del file"
 
-#: bugreport.c:156
+#: bugreport.c:162
 #, c-format
 msgid "could not create leading directories for '%s'"
 msgstr "impossibile creare le prime directory per '%s'"
 
-#: bugreport.c:163
+#: bugreport.c:169
 msgid "System Info"
 msgstr "Informazioni di sistema"
 
-#: bugreport.c:166
+#: bugreport.c:172
 msgid "Enabled Hooks"
 msgstr "Hook abilitati"
 
-#: bugreport.c:174
+#: bugreport.c:180
 #, c-format
 msgid "couldn't create a new file at '%s'"
 msgstr "impossibile creare un nuovo file in '%s'"
 
-#: bugreport.c:186
+#: bugreport.c:184
+#, c-format
+msgid "unable to write to %s"
+msgstr "impossibile scrivere su %s"
+
+#: bugreport.c:194
 #, c-format
 msgid "Created new report at '%s'.\n"
 msgstr "Nuovo report creato in '%s'.\n"
 
-#: fast-import.c:3085
+#: fast-import.c:3100
 #, c-format
 msgid "Missing from marks for submodule '%s'"
 msgstr "Contrassegni Da mancanti per il sottomodulo '%s'"
 
-#: fast-import.c:3087
+#: fast-import.c:3102
 #, c-format
 msgid "Missing to marks for submodule '%s'"
 msgstr "Contrassegni A mancanti per il sottomodulo '%s'"
 
-#: fast-import.c:3222
+#: fast-import.c:3237
 #, c-format
 msgid "Expected 'mark' command, got %s"
 msgstr "Atteso comando 'mark', ricevuto %s"
 
-#: fast-import.c:3227
+#: fast-import.c:3242
 #, c-format
 msgid "Expected 'to' command, got %s"
 msgstr "Atteso comando 'to', ricevuto %s"
 
-#: fast-import.c:3317
+#: fast-import.c:3334
 msgid "Expected format name:filename for submodule rewrite option"
 msgstr ""
 "Per l'opzione riscrittura sottomodulo ci si attendeva un formato nome:"
 "nomefile"
 
-#: fast-import.c:3371
+#: fast-import.c:3388
 #, c-format
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "funzionalità '%s' vietata nell'input senza --allow-unsafe-features"
 
+#: http-fetch.c:111
+#, c-format
+msgid "argument to --packfile must be a valid hash (got '%s')"
+msgstr "l'argomento di --packfile dev'essere un hash valido (ricevuto '%s')"
+
 #: credential-cache--daemon.c:223
 #, c-format
 msgid ""
@@ -22950,32 +23178,32 @@
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr "Il pinning delle chiavi pubbliche non è supportato con cURL < 7.44.0"
 
-#: http.c:914
+#: http.c:910
 msgid "CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0"
 msgstr "CURLSSLOPT_NO_REVOKE non è supportato con cURL < 7.44.0"
 
-#: http.c:993
+#: http.c:989
 msgid "Protocol restrictions not supported with cURL < 7.19.4"
 msgstr "Le restrizioni protocollo non sono supportate con cURL < 7.19.4"
 
-#: http.c:1139
+#: http.c:1132
 #, c-format
 msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
 msgstr "Backend SSL '%s' non supportato. Backend SSL supportati:"
 
-#: http.c:1146
+#: http.c:1139
 #, c-format
 msgid "Could not set SSL backend to '%s': cURL was built without SSL backends"
 msgstr ""
 "Impossibile impostare il backend SSL a '%s': cURL è stato compilato senza "
 "backend SSL"
 
-#: http.c:1150
+#: http.c:1143
 #, c-format
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "Impossibile impostare il backend SSL a '%s': già impostato"
 
-#: http.c:2032
+#: http.c:2025
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -22986,119 +23214,142 @@
 "  richiesta: %s\n"
 "   redirect: %s"
 
-#: remote-curl.c:166
+#: remote-curl.c:168
 #, c-format
 msgid "invalid quoting in push-option value: '%s'"
 msgstr "virgolette non valide nel valore push-option: '%s'"
 
-#: remote-curl.c:263
+#: remote-curl.c:295
 #, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
 msgstr "%sinfo/refs non valido: è un repository Git?"
 
-#: remote-curl.c:364
+#: remote-curl.c:396
 msgid "invalid server response; expected service, got flush packet"
 msgstr ""
 "risposta del server non valida; atteso servizio, ricevuto pacchetto flush"
 
-#: remote-curl.c:395
+#: remote-curl.c:427
 #, c-format
 msgid "invalid server response; got '%s'"
 msgstr "risposta del server non valida; ricevuto '%s'"
 
-#: remote-curl.c:455
+#: remote-curl.c:487
 #, c-format
 msgid "repository '%s' not found"
 msgstr "repository '%s' non trovato"
 
-#: remote-curl.c:459
+#: remote-curl.c:491
 #, c-format
 msgid "Authentication failed for '%s'"
 msgstr "Autenticazione non riuscita per '%s'"
 
-#: remote-curl.c:463
+#: remote-curl.c:495
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr "impossibile accedere a '%s': %s"
 
-#: remote-curl.c:469
+#: remote-curl.c:501
 #, c-format
 msgid "redirecting to %s"
 msgstr "redirezione a %s in corso"
 
-#: remote-curl.c:593
+#: remote-curl.c:630
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr ""
 "non dovrebbe esserci un pacchetto fine file se non si è accomodanti con "
 "questi ultimi"
 
-#: remote-curl.c:673
+#: remote-curl.c:642
+msgid "remote server sent stateless separator"
+msgstr "il server remoto ha inviato un separatore senza stato"
+
+#: remote-curl.c:712
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr ""
 "impossibile ritornare a un punto precedente dei dati POST RPC - prova ad "
 "aumentare il valore di http.postBuffer"
 
-#: remote-curl.c:733
+#: remote-curl.c:742
+#, c-format
+msgid "remote-curl: bad line length character: %.4s"
+msgstr "remote-curl: carattere lunghezza riga non valido: %.4s"
+
+#: remote-curl.c:744
+msgid "remote-curl: unexpected response end packet"
+msgstr "remote-curl: pacchetto fine risposta non atteso"
+
+#: remote-curl.c:820
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC non riuscita; %s"
 
-#: remote-curl.c:773
+#: remote-curl.c:860
 msgid "cannot handle pushes this big"
 msgstr "impossibile gestire push così grandi"
 
-#: remote-curl.c:888
+#: remote-curl.c:975
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr ""
 "impossibile eseguire il deflate della richiesta; errore deflate zlib %d"
 
-#: remote-curl.c:892
+#: remote-curl.c:979
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "impossibile eseguire il deflate della richiesta; errore fine zlib %d"
 
-#: remote-curl.c:1023
+#: remote-curl.c:1029
+#, c-format
+msgid "%d bytes of length header were received"
+msgstr "sono stati ricevuti %d byte dell'intestazione sulla lunghezza"
+
+#: remote-curl.c:1031
+#, c-format
+msgid "%d bytes of body are still expected"
+msgstr "sono ancora attesi %d byte del corpo"
+
+#: remote-curl.c:1120
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "il trasporto http stupido non supporta le funzionalità shallow"
 
-#: remote-curl.c:1038
+#: remote-curl.c:1135
 msgid "fetch failed."
 msgstr "recupero non riuscito."
 
-#: remote-curl.c:1086
+#: remote-curl.c:1183
 msgid "cannot fetch by sha1 over smart http"
 msgstr ""
 "impossibile recuperare i dati in base allo SHA1 con il trasporto HTTP "
 "intelligente"
 
-#: remote-curl.c:1130 remote-curl.c:1136
+#: remote-curl.c:1227 remote-curl.c:1233
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "errore protocollo: atteso SHA/riferimento, ricevuto '%s'"
 
-#: remote-curl.c:1148 remote-curl.c:1263
+#: remote-curl.c:1245 remote-curl.c:1360
 #, c-format
 msgid "http transport does not support %s"
 msgstr "il trasporto HTTP non supporta %s"
 
-#: remote-curl.c:1184
+#: remote-curl.c:1281
 msgid "git-http-push failed"
 msgstr "git-http-push non riuscito"
 
-#: remote-curl.c:1369
+#: remote-curl.c:1466
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: uso: git remote-curl <remoto> [<URL>]"
 
-#: remote-curl.c:1401
+#: remote-curl.c:1498
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl: errore durante la lettura del flusso dei comandi da Git"
 
-#: remote-curl.c:1408
+#: remote-curl.c:1505
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl: tentato un fetch senza un repository locale"
 
-#: remote-curl.c:1448
+#: remote-curl.c:1546
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl: ricevuto comando sconosciuto '%s' da Git"
@@ -24156,26 +24407,26 @@
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Ricorsione nel percorso del sottomodulo '$displaypath' non riuscita"
 
-#: git-submodule.sh:878
+#: git-submodule.sh:852
 msgid "The --cached option cannot be used with the --files option"
 msgstr "L'opzione --cached non può essere usata con l'opzione --files"
 
-#: git-submodule.sh:930
+#: git-submodule.sh:904
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "modalità $mod_dst inattesa"
 
-#: git-submodule.sh:950
+#: git-submodule.sh:924
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr "  Attenzione: $display_name non contiene il commit $sha1_src"
 
-#: git-submodule.sh:953
+#: git-submodule.sh:927
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr "  Attenzione: $display_name non contiene il commit $sha1_dst"
 
-#: git-submodule.sh:956
+#: git-submodule.sh:930
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -24603,7 +24854,7 @@
 msgstr[0] "eseguito touch su %d percorso\n"
 msgstr[1] "eseguito touch su %d percorsi\n"
 
-#: git-add--interactive.perl:1053
+#: git-add--interactive.perl:1055
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -24611,7 +24862,7 @@
 "Se la patch viene applicata senza problemi, l'hunk modificato sarà\n"
 "contrassegnato immediatamente per l'aggiunta all'area di staging."
 
-#: git-add--interactive.perl:1056
+#: git-add--interactive.perl:1058
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -24619,7 +24870,7 @@
 "Se la patch viene applicata senza problemi, l'hunk modificato sarà\n"
 "contrassegnato immediatamente per lo stash."
 
-#: git-add--interactive.perl:1059
+#: git-add--interactive.perl:1061
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -24627,8 +24878,8 @@
 "Se la patch viene applicata senza problemi, l'hunk modificato sarà\n"
 "contrassegnato immediatamente per la rimozione dall'area di staging."
 
-#: git-add--interactive.perl:1062 git-add--interactive.perl:1071
-#: git-add--interactive.perl:1077
+#: git-add--interactive.perl:1064 git-add--interactive.perl:1073
+#: git-add--interactive.perl:1079
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -24636,8 +24887,8 @@
 "Se la patch viene applicata senza problemi, l'hunk modificato sarà\n"
 "contrassegnato immediatamente per l'applicazione."
 
-#: git-add--interactive.perl:1065 git-add--interactive.perl:1068
-#: git-add--interactive.perl:1074
+#: git-add--interactive.perl:1067 git-add--interactive.perl:1070
+#: git-add--interactive.perl:1076
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -24645,12 +24896,12 @@
 "Se la patch viene applicata senza problemi, l'hunk modificato sarà\n"
 "contrassegnato immediatamente per la rimozione."
 
-#: git-add--interactive.perl:1111
+#: git-add--interactive.perl:1113
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "apertura del file di modifica hunk in scrittura non riuscita: %s"
 
-#: git-add--interactive.perl:1118
+#: git-add--interactive.perl:1120
 #, perl-format
 msgid ""
 "---\n"
@@ -24663,12 +24914,12 @@
 "Per rimuovere '%s' righe, eliminale.\n"
 "Le righe che iniziano con %s saranno rimosse.\n"
 
-#: git-add--interactive.perl:1140
+#: git-add--interactive.perl:1142
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "apertura del file di modifica hunk in lettura non riuscita: %s"
 
-#: git-add--interactive.perl:1248
+#: git-add--interactive.perl:1250
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -24685,7 +24936,7 @@
 "d - non aggiungere né quest'hunk né quelli successivi nel file all'area di "
 "staging"
 
-#: git-add--interactive.perl:1254
+#: git-add--interactive.perl:1256
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -24699,7 +24950,7 @@
 "a - esegui lo stash di quest'hunk e di tutti quelli successivi nel file\n"
 "d - non eseguire lo stash né di quest'hunk né di quelli successivi nel file"
 
-#: git-add--interactive.perl:1260
+#: git-add--interactive.perl:1262
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -24716,7 +24967,7 @@
 "d - non rimuovere né quest'hunk né quelli successivi nel file dall'area di "
 "staging"
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1268
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -24730,7 +24981,7 @@
 "a - applica quest'hunk e tutti quelli successivi nel file\n"
 "d - non applicare né quest'hunk né quelli successivi nel file"
 
-#: git-add--interactive.perl:1272 git-add--interactive.perl:1290
+#: git-add--interactive.perl:1274 git-add--interactive.perl:1292
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -24744,7 +24995,7 @@
 "a - rimuovi quest'hunk e tutti quelli successivi nel file\n"
 "d - non rimuovere né quest'hunk né quelli successivi nel file"
 
-#: git-add--interactive.perl:1278
+#: git-add--interactive.perl:1280
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -24758,7 +25009,7 @@
 "a - rimuovi quest'hunk e tutti quelli successivi nel file\n"
 "d - non rimuovere né quest'hunk né quelli successivi nel file"
 
-#: git-add--interactive.perl:1284
+#: git-add--interactive.perl:1286
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -24772,7 +25023,7 @@
 "a - applica quest'hunk e tutti quelli successivi nel file\n"
 "d - non applicare né quest'hunk né quelli successivi nel file"
 
-#: git-add--interactive.perl:1296
+#: git-add--interactive.perl:1298
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -24786,7 +25037,7 @@
 "a - applica quest'hunk e tutti quelli successivi nel file\n"
 "d - non applicare né quest'hunk né quelli successivi nel file"
 
-#: git-add--interactive.perl:1311
+#: git-add--interactive.perl:1313
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -24810,85 +25061,90 @@
 "e - modifica manualmente l'hunk corrente\n"
 "? - stampa una guida\n"
 
-#: git-add--interactive.perl:1342
+#: git-add--interactive.perl:1344
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "Gli hunk selezionati non si applicano senza problemi all'indice!\n"
 
-#: git-add--interactive.perl:1357
+#: git-add--interactive.perl:1359
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "ignoro ciò che non è stato sottoposto a merge: %s\n"
 
-#: git-add--interactive.perl:1468
+#: git-add--interactive.perl:1478
 #, perl-format
 msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
 msgstr "Applicare la modifica modo all'albero di lavoro [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1469
+#: git-add--interactive.perl:1479
 #, perl-format
 msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
 msgstr "Applicare l'eliminazione all'albero di lavoro [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1470
+#: git-add--interactive.perl:1480
+#, perl-format
+msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
+msgstr "Applicare l'aggiunta all'albero di lavoro [y,n,q,a,d%s,?]? "
+
+#: git-add--interactive.perl:1481
 #, perl-format
 msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
 msgstr "Applicare quest'hunk all'albero di lavoro [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1570
+#: git-add--interactive.perl:1587
 msgid "No other hunks to goto\n"
 msgstr "Nessun altro hunk a cui andare\n"
 
-#: git-add--interactive.perl:1588
+#: git-add--interactive.perl:1605
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Numero non valido: '%s'\n"
 
-#: git-add--interactive.perl:1593
+#: git-add--interactive.perl:1610
 #, perl-format
 msgid "Sorry, only %d hunk available.\n"
 msgid_plural "Sorry, only %d hunks available.\n"
 msgstr[0] "Mi dispiace, è disponibile solo %d hunk.\n"
 msgstr[1] "Mi dispiace, sono disponibili solo %d hunk.\n"
 
-#: git-add--interactive.perl:1619
+#: git-add--interactive.perl:1636
 msgid "No other hunks to search\n"
 msgstr "Nessun altro hunk in cui ricercare\n"
 
-#: git-add--interactive.perl:1636
+#: git-add--interactive.perl:1653
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Espressione regolare di ricerca %s malformata: %s\n"
 
-#: git-add--interactive.perl:1646
+#: git-add--interactive.perl:1663
 msgid "No hunk matches the given pattern\n"
 msgstr "Nessun hunk corrisponde al pattern fornito\n"
 
-#: git-add--interactive.perl:1658 git-add--interactive.perl:1680
+#: git-add--interactive.perl:1675 git-add--interactive.perl:1697
 msgid "No previous hunk\n"
 msgstr "Nessun hunk precedente\n"
 
-#: git-add--interactive.perl:1667 git-add--interactive.perl:1686
+#: git-add--interactive.perl:1684 git-add--interactive.perl:1703
 msgid "No next hunk\n"
 msgstr "Nessun hunk successivo\n"
 
-#: git-add--interactive.perl:1692
+#: git-add--interactive.perl:1709
 msgid "Sorry, cannot split this hunk\n"
 msgstr "Mi dispiace, non posso suddividere quest'hunk\n"
 
-#: git-add--interactive.perl:1698
+#: git-add--interactive.perl:1715
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
 msgstr[0] "Suddiviso in %d hunk.\n"
 msgstr[1] "Suddiviso in %d hunk.\n"
 
-#: git-add--interactive.perl:1708
+#: git-add--interactive.perl:1725
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "Mi dispiace, non posso modificare quest'hunk\n"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1773
+#: git-add--interactive.perl:1790
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -24908,19 +25164,19 @@
 "add untracked - aggiunge i contenuti dei file non tracciati all'insieme di\n"
 "                modifiche nell'area di staging\n"
 
-#: git-add--interactive.perl:1790 git-add--interactive.perl:1795
-#: git-add--interactive.perl:1798 git-add--interactive.perl:1805
-#: git-add--interactive.perl:1808 git-add--interactive.perl:1815
-#: git-add--interactive.perl:1819 git-add--interactive.perl:1825
+#: git-add--interactive.perl:1807 git-add--interactive.perl:1812
+#: git-add--interactive.perl:1815 git-add--interactive.perl:1822
+#: git-add--interactive.perl:1825 git-add--interactive.perl:1832
+#: git-add--interactive.perl:1836 git-add--interactive.perl:1842
 msgid "missing --"
 msgstr "-- mancante"
 
-#: git-add--interactive.perl:1821
+#: git-add--interactive.perl:1838
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "modalità --patch sconosciuta: %s"
 
-#: git-add--interactive.perl:1827 git-add--interactive.perl:1833
+#: git-add--interactive.perl:1844 git-add--interactive.perl:1850
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "argomento %s non valido, atteso --"
@@ -25246,61 +25502,93 @@
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Aggiungo to: %s dalla riga '%s'\n"
 
-#: git-send-email.perl:1718
+#: git-send-email.perl:1722
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(non mbox) Aggiungo cc: %s dalla riga '%s'\n"
 
-#: git-send-email.perl:1753
+#: git-send-email.perl:1757
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(corpo) Aggiungo cc: %s dalla riga '%s'\n"
 
-#: git-send-email.perl:1864
+#: git-send-email.perl:1868
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Impossibile eseguire '%s'"
 
-#: git-send-email.perl:1871
+#: git-send-email.perl:1875
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Aggiungo %s: %s da: '%s'\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1879
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) chiusura della pipe a '%s' non riuscita"
 
-#: git-send-email.perl:1905
+#: git-send-email.perl:1909
 msgid "cannot send message as 7bit"
 msgstr "impossibile inviare il messaggio con codifica a 7 bit"
 
-#: git-send-email.perl:1913
+#: git-send-email.perl:1917
 msgid "invalid transfer encoding"
 msgstr "codifica di trasferimento non valida"
 
-#: git-send-email.perl:1954 git-send-email.perl:2006 git-send-email.perl:2016
+#: git-send-email.perl:1958 git-send-email.perl:2010 git-send-email.perl:2020
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "impossibile aprire %s: %s\n"
 
-#: git-send-email.perl:1957
+#: git-send-email.perl:1961
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr "%s: la patch contiene una riga più lunga di 998 caratteri"
 
-#: git-send-email.perl:1974
+#: git-send-email.perl:1978
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr "Salto %s con il suffisso di backup '%s'.\n"
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:1978
+#: git-send-email.perl:1982
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Inviare %s? [y|N]: "
 
 #, c-format
+#~ msgid "Finding commits for commit graph from %d ref"
+#~ msgid_plural "Finding commits for commit graph from %d refs"
+#~ msgstr[0] ""
+#~ "Ricerca dei commit per il grafo dei commit da %d riferimento in corso"
+#~ msgstr[1] ""
+#~ "Ricerca dei commit per il grafo dei commit da %d riferimenti in corso"
+
+#, c-format
+#~ msgid "invalid commit object id: %s"
+#~ msgstr "ID oggetto commit non valido: %s"
+
+#, c-format
+#~ msgid "Removing worktrees/%s: not a valid directory"
+#~ msgstr "Rimuovo worktrees/%s: non è una directory valida"
+
+#, c-format
+#~ msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
+#~ msgstr "Rimuovo worktrees/%s: impossibile leggere il file gitdir (%s)"
+
+#, c-format
+#~ msgid "Removing worktrees/%s: invalid gitdir file"
+#~ msgstr "Rimuovo worktrees/%s: file gitdir non valido"
+
+#, c-format
+#~ msgid "unable to re-add worktree '%s'"
+#~ msgstr "impossibile aggiungere nuovamente l'albero di lavoro '%s'"
+
+#, c-format
+#~ msgid "target '%s' already exists"
+#~ msgstr "la destinazione '%s' esiste già"
+
+#, c-format
 #~ msgid ""
 #~ "Cannot update sparse checkout: the following entries are not up to date:\n"
 #~ "%s"
diff --git a/po/sv.po b/po/sv.po
index 73696a1..93f3c6f 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: git 2.27.0\n"
+"Project-Id-Version: git 2.28.0\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-05-27 07:23+0800\n"
-"PO-Revision-Date: 2020-05-27 07:40+0100\n"
+"POT-Creation-Date: 2020-07-10 09:53+0800\n"
+"PO-Revision-Date: 2020-07-11 17:50+0100\n"
 "Last-Translator: Peter Krefting <peter@softwolves.pp.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "Language: sv\n"
@@ -111,21 +111,21 @@
 msgid "ignoring unmerged: %s"
 msgstr "ignorerar ej sammanslagen: %s"
 
-#: add-interactive.c:929 add-patch.c:1675 git-add--interactive.perl:1366
+#: add-interactive.c:929 add-patch.c:1691 git-add--interactive.perl:1368
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Endast binära filer ändrade.\n"
 
-#: add-interactive.c:931 add-patch.c:1673 git-add--interactive.perl:1368
+#: add-interactive.c:931 add-patch.c:1689 git-add--interactive.perl:1370
 #, c-format
 msgid "No changes.\n"
 msgstr "Inga ändringar.\n"
 
-#: add-interactive.c:935 git-add--interactive.perl:1376
+#: add-interactive.c:935 git-add--interactive.perl:1378
 msgid "Patch update"
 msgstr "Uppdatera patch"
 
-#: add-interactive.c:974 git-add--interactive.perl:1754
+#: add-interactive.c:974 git-add--interactive.perl:1771
 msgid "Review diff"
 msgstr "Granska diff"
 
@@ -193,11 +193,11 @@
 msgid "(empty) select nothing"
 msgstr "(tomt) markera ingenting"
 
-#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1851
+#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1868
 msgid "*** Commands ***"
 msgstr "*** Kommandon ***"
 
-#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1848
+#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1865
 msgid "What now"
 msgstr "Vad nu"
 
@@ -214,7 +214,7 @@
 #: builtin/merge.c:276 builtin/pull.c:190 builtin/submodule--helper.c:409
 #: builtin/submodule--helper.c:1394 builtin/submodule--helper.c:1397
 #: builtin/submodule--helper.c:1902 builtin/submodule--helper.c:1905
-#: builtin/submodule--helper.c:2148 bugreport.c:129
+#: builtin/submodule--helper.c:2148 bugreport.c:135
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "sökväg"
@@ -223,27 +223,32 @@
 msgid "could not refresh index"
 msgstr "kunde inte uppdatera indexet"
 
-#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1765
+#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1782
 #, c-format
 msgid "Bye.\n"
 msgstr "Hej då.\n"
 
-#: add-patch.c:34 git-add--interactive.perl:1428
+#: add-patch.c:34 git-add--interactive.perl:1430
 #, c-format, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "Köa ändrat läge [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:35 git-add--interactive.perl:1429
+#: add-patch.c:35 git-add--interactive.perl:1431
 #, c-format, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "Köa borttagning [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:36 git-add--interactive.perl:1430
+#: add-patch.c:36 git-add--interactive.perl:1432
+#, c-format, perl-format
+msgid "Stage addition [y,n,q,a,d%s,?]? "
+msgstr "Köa tillägg [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:37 git-add--interactive.perl:1433
 #, c-format, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Köa stycket [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:38
+#: add-patch.c:39
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "staging."
@@ -251,7 +256,7 @@
 "Om patchen kan appliceras rent kommer det redigerade stycket att köas "
 "omedelbart."
 
-#: add-patch.c:41
+#: add-patch.c:42
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -265,22 +270,27 @@
 "a - köa stycket och alla följande i filen\n"
 "d - köa inte stycket eller något av de följande i filen\n"
 
-#: add-patch.c:55 git-add--interactive.perl:1433
+#: add-patch.c:56 git-add--interactive.perl:1436
 #, c-format, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "Stash:a ändrat läge [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:56 git-add--interactive.perl:1434
+#: add-patch.c:57 git-add--interactive.perl:1437
 #, c-format, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "Stash:a borttagning [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:57 git-add--interactive.perl:1435
+#: add-patch.c:58 git-add--interactive.perl:1438
+#, c-format, perl-format
+msgid "Stash addition [y,n,q,a,d%s,?]? "
+msgstr "Stash:a tillägg [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:59 git-add--interactive.perl:1439
 #, c-format, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "Stash:a stycket [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:59
+#: add-patch.c:61
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "stashing."
@@ -288,7 +298,7 @@
 "Om patchen kan appliceras rent kommer det redigerade stycket att läggas till "
 "i \"stash\" omedelbart."
 
-#: add-patch.c:62
+#: add-patch.c:64
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -302,22 +312,27 @@
 "a - \"stash\":a stycket och alla följande i filen\n"
 "d - \"stash\":a inte stycket eller något av de följande i filen\n"
 
-#: add-patch.c:78 git-add--interactive.perl:1438
+#: add-patch.c:80 git-add--interactive.perl:1442
 #, c-format, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr "Ta bort ändrat läge från kön [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:79 git-add--interactive.perl:1439
+#: add-patch.c:81 git-add--interactive.perl:1443
 #, c-format, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "Ta bort borttagning från kön [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:80 git-add--interactive.perl:1440
+#: add-patch.c:82 git-add--interactive.perl:1444
+#, c-format, perl-format
+msgid "Unstage addition [y,n,q,a,d%s,?]? "
+msgstr "Ta bort tillägg från kön [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:83 git-add--interactive.perl:1445
 #, c-format, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Ta bort stycket från kön [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:82
+#: add-patch.c:85
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "unstaging."
@@ -325,7 +340,7 @@
 "Om patchen kan appliceras rent kommer det redigerade stycket att tas bort "
 "från kön omedelbart."
 
-#: add-patch.c:85
+#: add-patch.c:88
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -339,22 +354,27 @@
 "a - ta bort stycket och alla följande i filen från kön\n"
 "d - ta inte bort stycket eller något av de följande i filen från kön\n"
 
-#: add-patch.c:100 git-add--interactive.perl:1443
+#: add-patch.c:103 git-add--interactive.perl:1448
 #, c-format, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr "Applicera ändrat läge på indexet [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:101 git-add--interactive.perl:1444
+#: add-patch.c:104 git-add--interactive.perl:1449
 #, c-format, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "Applicera borttagning på indexet [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:102 git-add--interactive.perl:1445
+#: add-patch.c:105 git-add--interactive.perl:1450
+#, c-format, perl-format
+msgid "Apply addition to index [y,n,q,a,d%s,?]? "
+msgstr "Applicera tillägg på indexet [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:106 git-add--interactive.perl:1451
 #, c-format, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr "Applicera stycket på indexet [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:104 add-patch.c:169 add-patch.c:212
+#: 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."
@@ -362,7 +382,7 @@
 "Om patchen kan appliceras rent kommer det redigerade stycket att markeras "
 "för applicering omedelbart."
 
-#: add-patch.c:107
+#: add-patch.c:111
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -376,25 +396,31 @@
 "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:122 git-add--interactive.perl:1448
-#: git-add--interactive.perl:1463
+#: add-patch.c:126 git-add--interactive.perl:1454
+#: git-add--interactive.perl:1472
 #, c-format, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr "Kasta ändrat läge från arbetskatalogen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:123 git-add--interactive.perl:1449
-#: git-add--interactive.perl:1464
+#: add-patch.c:127 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
 #, c-format, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr "Kasta borttagning från arbetskatalogen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:124 git-add--interactive.perl:1450
-#: git-add--interactive.perl:1465
+#: add-patch.c:128 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
+#, c-format, perl-format
+msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
+msgstr "Kasta tillägg från arbetskatalogen [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:129 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
 #, c-format, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr "Kasta stycket från arbetskatalogen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:126 add-patch.c:148 add-patch.c:191
+#: 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."
@@ -402,7 +428,7 @@
 "Om patchen kan appliceras rent kommer det redigerade stycket att markeras "
 "för kasta omedelbart."
 
-#: add-patch.c:129 add-patch.c:194
+#: add-patch.c:134 add-patch.c:202
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -416,22 +442,27 @@
 "a - förkasta stycket och alla följande i filen\n"
 "d - förkasta inte stycket eller något av de följande i filen\n"
 
-#: add-patch.c:144 add-patch.c:187 git-add--interactive.perl:1453
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1460
 #, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Kasta ändrat läge från indexet och arbetskatalogen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:145 add-patch.c:188 git-add--interactive.perl:1454
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1461
 #, c-format, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Kasta borttagning från indexet och arbetskatalogen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:146 add-patch.c:189 git-add--interactive.perl:1455
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1462
+#, c-format, perl-format
+msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Kasta tillägg från indexet och arbetskatalogen [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1463
 #, c-format, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Kasta stycket från indexet och arbetskatalogen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:151
+#: add-patch.c:157
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -445,22 +476,27 @@
 "a - förkasta stycket och alla följande i filen\n"
 "d - förkasta inte stycket eller något av de följande i filen\n"
 
-#: add-patch.c:165 add-patch.c:208 git-add--interactive.perl:1458
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1466
 #, c-format, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Applicera ändrat läge på indexet och arbetskatalogen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:166 add-patch.c:209 git-add--interactive.perl:1459
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1467
 #, c-format, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Applicera borttagning på indexet och arbetskatalogen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:167 add-patch.c:210 git-add--interactive.perl:1460
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1468
+#, c-format, perl-format
+msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Applicera tillägg på indexet och arbetskatalogen [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1469
 #, c-format, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Applicera stycket på indexet och arbetskatalogen [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:172
+#: add-patch.c:179
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -474,7 +510,7 @@
 "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:215
+#: add-patch.c:224
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -488,34 +524,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:319
+#: add-patch.c:328
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "kunde inte tolka styckehuvudet \"%.*s\""
 
-#: add-patch.c:338 add-patch.c:342
+#: add-patch.c:347 add-patch.c:351
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "kunde inte tolka färgat styckehuvud \"%.*s\""
 
-#: add-patch.c:396
+#: add-patch.c:405
 msgid "could not parse diff"
 msgstr "kunde inte tolka diff"
 
-#: add-patch.c:415
+#: add-patch.c:424
 msgid "could not parse colored diff"
 msgstr "kunde inte tolka färgad diff"
 
-#: add-patch.c:429
+#: add-patch.c:438
 #, c-format
 msgid "failed to run '%s'"
 msgstr "misslyckades att köra \"%s\""
 
-#: add-patch.c:588
+#: add-patch.c:602
 msgid "mismatched output from interactive.diffFilter"
 msgstr "omaka utdata från interactive.diffFilter"
 
-#: add-patch.c:589
+#: add-patch.c:603
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -523,7 +559,7 @@
 "Alla rader i indata måste ha en motsvarande rad i utdata från\n"
 "ditt filter."
 
-#: add-patch.c:762
+#: add-patch.c:776
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -532,7 +568,7 @@
 "förväntade sammanhangsrad %d i\n"
 "%.*s"
 
-#: add-patch.c:777
+#: add-patch.c:791
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -545,11 +581,11 @@
 "\tavslutas inte med:\n"
 "%.*s"
 
-#: add-patch.c:1053 git-add--interactive.perl:1112
+#: add-patch.c:1067 git-add--interactive.perl:1114
 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:1057
+#: add-patch.c:1071
 #, c-format
 msgid ""
 "---\n"
@@ -563,7 +599,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:1071 git-add--interactive.perl:1126
+#: add-patch.c:1085 git-add--interactive.perl:1128
 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"
@@ -573,11 +609,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:1104
+#: add-patch.c:1118
 msgid "could not parse hunk header"
 msgstr "kunde inte tolka styckehuvud"
 
-#: add-patch.c:1149
+#: add-patch.c:1163
 msgid "'git apply --cached' failed"
 msgstr "\"git apply --cached\" misslyckades"
 
@@ -593,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:1218 git-add--interactive.perl:1239
+#: add-patch.c:1232 git-add--interactive.perl:1241
 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:1261
+#: add-patch.c:1275
 msgid "The selected hunks do not apply to the index!"
 msgstr "Markerade stycken kan inte appliceras på indexet!"
 
-#: add-patch.c:1262 git-add--interactive.perl:1343
+#: add-patch.c:1276 git-add--interactive.perl:1345
 msgid "Apply them to the worktree anyway? "
 msgstr "Applicera dem på arbetskatalogen trots det? "
 
-#: add-patch.c:1269 git-add--interactive.perl:1346
+#: add-patch.c:1283 git-add--interactive.perl:1348
 msgid "Nothing was applied.\n"
 msgstr "Ingenting applicerades.\n"
 
-#: add-patch.c:1326
+#: add-patch.c:1340
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -634,69 +670,69 @@
 "e - redigera aktuellt stycke manuellt\n"
 "? - visa hjälp\n"
 
-#: add-patch.c:1447 add-patch.c:1457
+#: add-patch.c:1463 add-patch.c:1473
 msgid "No previous hunk"
 msgstr "Inget föregående stycke"
 
-#: add-patch.c:1452 add-patch.c:1462
+#: add-patch.c:1468 add-patch.c:1478
 msgid "No next hunk"
 msgstr "Inget följande stycke"
 
-#: add-patch.c:1468
+#: add-patch.c:1484
 msgid "No other hunks to goto"
 msgstr "Inga andra stycken att gå till"
 
-#: add-patch.c:1479 git-add--interactive.perl:1577
+#: add-patch.c:1495 git-add--interactive.perl:1594
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "gå till vilket stycke (<ret> för att se fler)? "
 
-#: add-patch.c:1480 git-add--interactive.perl:1579
+#: add-patch.c:1496 git-add--interactive.perl:1596
 msgid "go to which hunk? "
 msgstr "gå till vilket stycke? "
 
-#: add-patch.c:1491
+#: add-patch.c:1507
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Ogiltigt siffervärde: \"%s\""
 
-#: add-patch.c:1496
+#: add-patch.c:1512
 #, 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:1505
+#: add-patch.c:1521
 msgid "No other hunks to search"
 msgstr "Inga andra stycken att söka efter"
 
-#: add-patch.c:1511 git-add--interactive.perl:1623
+#: add-patch.c:1527 git-add--interactive.perl:1640
 msgid "search for regex? "
 msgstr "sök efter reguljärt uttryck? "
 
-#: add-patch.c:1526
+#: add-patch.c:1542
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Felaktigt format på reguljärt sökuttryck %s: %s"
 
-#: add-patch.c:1543
+#: add-patch.c:1559
 msgid "No hunk matches the given pattern"
 msgstr "Inga stycken motsvarar givet mönster"
 
-#: add-patch.c:1550
+#: add-patch.c:1566
 msgid "Sorry, cannot split this hunk"
 msgstr "Beklagar, kan inte dela stycket"
 
-#: add-patch.c:1554
+#: add-patch.c:1570
 #, c-format
 msgid "Split into %d hunks."
 msgstr "Dela i %d stycken."
 
-#: add-patch.c:1558
+#: add-patch.c:1574
 msgid "Sorry, cannot edit this hunk"
 msgstr "Beklagar, kan inte redigera stycket"
 
-#: add-patch.c:1609
+#: add-patch.c:1625
 msgid "'git apply' failed"
 msgstr "\"git apply\" misslyckades"
 
@@ -923,7 +959,7 @@
 #: apply.c:1481
 #, c-format
 msgid "recount: unexpected line: %.*s"
-msgstr "recount: förväntade rad: %.*s"
+msgstr "recount: oväntad rad: %.*s"
 
 #: apply.c:1550
 #, c-format
@@ -1394,7 +1430,7 @@
 
 #: apply.c:5008 builtin/am.c:2238 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3458 builtin/rebase.c:1332
+#: builtin/pack-objects.c:3530 builtin/rebase.c:1332
 msgid "action"
 msgstr "åtgärd"
 
@@ -1483,7 +1519,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:480 builtin/pack-objects.c:232 builtin/pack-objects.c:235
+#: archive-zip.c:480 builtin/pack-objects.c:243 builtin/pack-objects.c:246
 #, c-format
 msgid "deflate error (%d)"
 msgstr "fel i deflate (%d)"
@@ -1553,8 +1589,8 @@
 msgstr "lägg till prefix till varje sökväg i arkivet"
 
 #: archive.c:467 builtin/blame.c:861 builtin/blame.c:865 builtin/blame.c:866
-#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1162
-#: builtin/fast-export.c:1164 builtin/fast-export.c:1168 builtin/grep.c:907
+#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1208
+#: builtin/fast-export.c:1210 builtin/fast-export.c:1214 builtin/grep.c:907
 #: 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
@@ -1781,10 +1817,10 @@
 "--reverse och --first-parent tillsammans kräver att du anger senaste "
 "incheckningen"
 
-#: blame.c:2821 bundle.c:167 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
+#: blame.c:2821 bundle.c:187 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
 #: sequencer.c:4466 submodule.c:847 builtin/commit.c:1047 builtin/log.c:405
 #: builtin/log.c:1012 builtin/log.c:1541 builtin/log.c:1945 builtin/log.c:2235
-#: builtin/merge.c:415 builtin/pack-objects.c:3276 builtin/pack-objects.c:3291
+#: builtin/merge.c:415 builtin/pack-objects.c:3348 builtin/pack-objects.c:3363
 #: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr "misslyckades skapa revisionstraversering"
@@ -1949,84 +1985,88 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "HEAD i arbetskatalogen %s har inte uppdaterats"
 
-#: bundle.c:36
+#: bundle.c:47
 #, c-format
 msgid "'%s' does not look like a v2 bundle file"
 msgstr "'%s' ser inte ut som en v2-bundle-fil"
 
-#: bundle.c:64
+#: bundle.c:69
+msgid "unknown hash algorithm length"
+msgstr "okänd hashningsalgoritmlängd"
+
+#: bundle.c:84
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "okänt huvud: %s%s (%d)"
 
-#: bundle.c:90 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
+#: bundle.c:110 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
 msgstr "kunde inte öppna \"%s\""
 
-#: bundle.c:143
+#: bundle.c:163
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Arkivet saknar dessa nödvändiga incheckningar:"
 
-#: bundle.c:146
+#: bundle.c:166
 msgid "need a repository to verify a bundle"
 msgstr "behöver ett arkiv för att verifiera ett paket (bundle)."
 
-#: bundle.c:197
+#: bundle.c:217
 #, 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:204
+#: bundle.c:224
 msgid "The bundle records a complete history."
 msgstr "Paketet (bundlen) beskriver en komplett historik."
 
-#: bundle.c:206
+#: bundle.c:226
 #, 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:273
+#: bundle.c:293
 msgid "unable to dup bundle descriptor"
 msgstr "kan inte duplicera pakethandtag"
 
-#: bundle.c:280
+#: bundle.c:300
 msgid "Could not spawn pack-objects"
 msgstr "Kunde inte starta pack-objects"
 
-#: bundle.c:291
+#: bundle.c:311
 msgid "pack-objects died"
 msgstr "pack-objects misslyckades"
 
-#: bundle.c:333
+#: bundle.c:353
 msgid "rev-list died"
 msgstr "rev-list dog"
 
-#: bundle.c:382
+#: bundle.c:402
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "referensen \"%s\" exkluderas av argumenten till rev-list"
 
-#: bundle.c:461 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
+#: bundle.c:481 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "okänt argument: %s"
 
-#: bundle.c:469
+#: bundle.c:489
 msgid "Refusing to create empty bundle."
 msgstr "Vägrar skapa ett tomt paket (bundle)."
 
-#: bundle.c:479
+#: bundle.c:499
 #, c-format
 msgid "cannot create '%s'"
 msgstr "kan inte skapa \"%s\""
 
-#: bundle.c:504
+#: bundle.c:524
 msgid "index-pack died"
 msgstr "index-pack dog"
 
@@ -2035,258 +2075,250 @@
 msgid "invalid color value: %.*s"
 msgstr "felaktigt färgvärde: %.*s"
 
-#: commit-graph.c:183
+#: commit-graph.c:238
 msgid "commit-graph file is too small"
 msgstr "incheckningsgraffilen %s är för liten"
 
-#: commit-graph.c:248
+#: commit-graph.c:303
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "incheckningsgrafens signatur %X stämmer inte med signaturen %X"
 
-#: commit-graph.c:255
+#: commit-graph.c:310
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "incheckningsgrafens version %X stämmer inte med versionen %X"
 
-#: commit-graph.c:262
+#: commit-graph.c:317
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "incheckningsgrafens hashversion %X stämmer inte med versionen %X"
 
-#: commit-graph.c:284
+#: commit-graph.c:339
 msgid "commit-graph chunk lookup table entry missing; file may be incomplete"
 msgstr ""
 "incheckningsgrafen saknar post i styckeuppslagningstabell; filen kan vara "
 "ofullständig"
 
-#: commit-graph.c:294
+#: commit-graph.c:349
 #, c-format
 msgid "commit-graph improper chunk offset %08x%08x"
 msgstr "felaktigt offset för stycke %08x%08x i incheckningsgraffilen"
 
-#: commit-graph.c:362
+#: commit-graph.c:417
 #, c-format
 msgid "commit-graph chunk id %08x appears multiple times"
 msgstr "incheckningsgrafens stycke-id %08x förekommer flera gånger"
 
-#: commit-graph.c:436
+#: commit-graph.c:491
 msgid "commit-graph has no base graphs chunk"
 msgstr "incheckningsgrafen har inga bas-graf-stycken"
 
-#: commit-graph.c:446
+#: commit-graph.c:501
 msgid "commit-graph chain does not match"
 msgstr "incheckningsgrafens kedja stämmer inte"
 
-#: commit-graph.c:494
+#: commit-graph.c:549
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "ogiltig incheckingsgrafkedja: rad \"%s\" är inte ett hash-värde"
 
-#: commit-graph.c:518
+#: commit-graph.c:573
 msgid "unable to find all commit-graph files"
 msgstr "kan inte hitta alla incheckingsgraffiler"
 
-#: commit-graph.c:651 commit-graph.c:711
+#: commit-graph.c:706 commit-graph.c:770
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr "ogiltig incheckningsposition. incheckningsgrafen är troligtvis trasig"
 
-#: commit-graph.c:672
+#: commit-graph.c:727
 #, c-format
 msgid "could not find commit %s"
 msgstr "kunde inte hitta incheckningen %s"
 
-#: commit-graph.c:948 builtin/am.c:1292
+#: commit-graph.c:1009 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "kunde inte tolka incheckningen %s"
 
-#: commit-graph.c:1096
+#: commit-graph.c:1157
 msgid "Writing changed paths Bloom filters index"
 msgstr "Skriver Bloom-filterindex för ändrade sökvägar"
 
-#: commit-graph.c:1121
+#: commit-graph.c:1182
 msgid "Writing changed paths Bloom filters data"
 msgstr "Skriver Bloom-filterdata för ändrade sökvägar"
 
-#: commit-graph.c:1160 builtin/pack-objects.c:2783
+#: commit-graph.c:1221 builtin/pack-objects.c:2832
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "kunde inte hämta typ för objektet %s"
 
-#: commit-graph.c:1196
+#: commit-graph.c:1257
 msgid "Loading known commits in commit graph"
 msgstr "Läser in kända incheckningar i incheckningsgraf"
 
-#: commit-graph.c:1213
+#: commit-graph.c:1274
 msgid "Expanding reachable commits in commit graph"
 msgstr "Expanderar nåbara incheckningar i incheckningsgraf"
 
-#: commit-graph.c:1233
+#: commit-graph.c:1294
 msgid "Clearing commit marks in commit graph"
 msgstr "Rensar incheckningsmärken i incheckningsgraf"
 
-#: commit-graph.c:1252
+#: commit-graph.c:1313
 msgid "Computing commit graph generation numbers"
 msgstr "Beräknar generationsvärden för incheckningsgraf"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1367
 msgid "Computing commit changed paths Bloom filters"
 msgstr "Beräknar Bloom-filter för sökvägar ändrade av incheckningen"
 
-#: commit-graph.c:1359
+#: commit-graph.c:1423
+msgid "Collecting referenced commits"
+msgstr "Samlar refererade incheckningar"
+
+#: commit-graph.c:1447
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "Söker incheckningar för incheckingsgraf i %d paket"
 msgstr[1] "Söker incheckningar för incheckingsgraf i %d paket"
 
-#: commit-graph.c:1372
+#: commit-graph.c:1460
 #, c-format
 msgid "error adding pack %s"
 msgstr "fel vid tillägg av paketet %s"
 
-#: commit-graph.c:1376
+#: commit-graph.c:1464
 #, c-format
 msgid "error opening index for %s"
 msgstr "fel vid öppning av indexet för %s"
 
-#: commit-graph.c:1405
-#, c-format
-msgid "Finding commits for commit graph from %d ref"
-msgid_plural "Finding commits for commit graph from %d refs"
-msgstr[0] "Söker incheckningar för incheckingsgraf från %d referens"
-msgstr[1] "Söker incheckningar för incheckingsgraf från %d referenser"
-
-#: commit-graph.c:1426
-#, c-format
-msgid "invalid commit object id: %s"
-msgstr "ogiltigt inchecknings-objekt-id %s"
-
-#: commit-graph.c:1442
+#: commit-graph.c:1503
 msgid "Finding commits for commit graph among packed objects"
 msgstr "Söker incheckningar för incheckingsgraf i packade objekt"
 
-#: commit-graph.c:1457
+#: commit-graph.c:1518
 msgid "Counting distinct commits in commit graph"
 msgstr "Räknar olika incheckningar i incheckningsgraf"
 
-#: commit-graph.c:1489
+#: commit-graph.c:1550
 msgid "Finding extra edges in commit graph"
 msgstr "Söker ytterligare kanter i incheckingsgraf"
 
-#: commit-graph.c:1538
+#: commit-graph.c:1599
 msgid "failed to write correct number of base graph ids"
 msgstr "kunde inte skriva korrekt antal bas-graf-id:n"
 
-#: commit-graph.c:1572 midx.c:812
+#: commit-graph.c:1633 midx.c:812
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "kunde inte skapa inledande kataloger för %s"
 
-#: commit-graph.c:1585
+#: commit-graph.c:1646
 msgid "unable to create temporary graph layer"
 msgstr "kan inte skapa temporärt graflager"
 
-#: commit-graph.c:1590
+#: commit-graph.c:1651
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "kan inte justera delade behörigheter för \"%s\""
 
-#: commit-graph.c:1667
+#: commit-graph.c:1728
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "Skriver ut incheckningsgraf i %d pass"
 msgstr[1] "Skriver ut incheckningsgraf i %d pass"
 
-#: commit-graph.c:1712
+#: commit-graph.c:1773
 msgid "unable to open commit-graph chain file"
 msgstr "Kunde inte öppna incheckningsgrafkedjefilen"
 
-#: commit-graph.c:1728
+#: commit-graph.c:1789
 msgid "failed to rename base commit-graph file"
 msgstr "kunde inte byta namn på bas-incheckingsgraffilen"
 
-#: commit-graph.c:1748
+#: commit-graph.c:1809
 msgid "failed to rename temporary commit-graph file"
 msgstr "kunde inte byta namn på temporär incheckningsgraffil"
 
-#: commit-graph.c:1874
+#: commit-graph.c:1935
 msgid "Scanning merged commits"
 msgstr "Söker sammanslagna incheckningar"
 
-#: commit-graph.c:1885
+#: commit-graph.c:1946
 #, c-format
 msgid "unexpected duplicate commit id %s"
 msgstr "oväntat duplicerat inchecknings-id %s"
 
-#: commit-graph.c:1908
+#: commit-graph.c:1969
 msgid "Merging commit-graph"
 msgstr "Slår ihop incheckningsgraf"
 
-#: commit-graph.c:2096
+#: commit-graph.c:2156
 #, c-format
 msgid "the commit graph format cannot write %d commits"
 msgstr "formatet på incheckningsgrafen kan inte visa %d incheckningar"
 
-#: commit-graph.c:2107
+#: commit-graph.c:2167
 msgid "too many commits to write graph"
 msgstr "för många incheckningar för att skriva graf"
 
-#: commit-graph.c:2200
+#: commit-graph.c:2260
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr ""
 "filen med incheckningsgraf har felaktig checksumma och är troligtvis trasig"
 
-#: commit-graph.c:2210
+#: commit-graph.c:2270
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "incheckningsgrafen har felaktig OID-ordning: %s så %s"
 
-#: commit-graph.c:2220 commit-graph.c:2235
+#: commit-graph.c:2280 commit-graph.c:2295
 #, 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:2227
+#: commit-graph.c:2287
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "kunde inte tolka incheckning %s från incheckningsgraf"
 
-#: commit-graph.c:2245
+#: commit-graph.c:2305
 msgid "Verifying commits in commit graph"
 msgstr "Bekräftar incheckningar i incheckningsgrafen"
 
-#: commit-graph.c:2259
+#: commit-graph.c:2320
 #, 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:2266
+#: commit-graph.c:2327
 #, 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:2276
+#: commit-graph.c:2337
 #, 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:2285
+#: commit-graph.c:2346
 #, 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:2298
+#: commit-graph.c:2360
 #, 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:2303
+#: commit-graph.c:2365
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2294,7 +2326,7 @@
 "incheckningsgrafen har generationsnummer noll för incheckningen %s, men icke-"
 "noll på annan plats"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2369
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2302,12 +2334,12 @@
 "incheckningsgrafen har generationsnummer skilt från noll för incheckningen "
 "%s, men noll på annan plats"
 
-#: commit-graph.c:2322
+#: commit-graph.c:2385
 #, c-format
 msgid "commit-graph generation for commit %s is %u != %u"
 msgstr "incheckningsgrafens generation för incheckningen %s är %u != %u"
 
-#: commit-graph.c:2328
+#: commit-graph.c:2391
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
@@ -2345,29 +2377,29 @@
 "Slå av detta meddelande genom att skriva\n"
 "\"git config advice.graftFileDeprecated false\""
 
-#: commit.c:1168
+#: commit.c:1172
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 "Incheckningen %s har en obetrodd GPG-signatur som påstås vara gjord av %s."
 
-#: commit.c:1172
+#: commit.c:1176
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr ""
 "Incheckningen %s har en felaktig GPG-signatur som påstås vara gjord av %s."
 
-#: commit.c:1175
+#: commit.c:1179
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Incheckning %s har inte någon GPG-signatur."
 
-#: commit.c:1178
+#: commit.c:1182
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "Incheckningen %s har en korrekt GPG-signatur av %s\n"
 
-#: commit.c:1432
+#: commit.c:1436
 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"
@@ -2562,7 +2594,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:1533 builtin/pack-objects.c:3542
+#: config.c:1533 builtin/pack-objects.c:3617
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "felaktig paketkomprimeringsgrad %d"
@@ -2711,72 +2743,81 @@
 msgid "server doesn't support '%s'"
 msgstr "Servern stöder inte \"%s\""
 
-#: connect.c:103
+#: connect.c:118
 #, c-format
 msgid "server doesn't support feature '%s'"
 msgstr "servern stöder inte funktionen \"%s\""
 
-#: connect.c:114
+#: connect.c:129
 msgid "expected flush after capabilities"
 msgstr "förväntade \"flush\" efter förmågor"
 
-#: connect.c:233
+#: connect.c:263
 #, c-format
 msgid "ignoring capabilities after first line '%s'"
 msgstr "ignorerar förmågor efter första raden \"%s\""
 
-#: connect.c:252
+#: connect.c:284
 msgid "protocol error: unexpected capabilities^{}"
 msgstr "protokollfel: förväntade inte capabilities^{}"
 
-#: connect.c:273
+#: connect.c:306
 #, c-format
 msgid "protocol error: expected shallow sha-1, got '%s'"
 msgstr "protokollfel: förväntade \"shallow sha-1\" fick \"%s\""
 
-#: connect.c:275
+#: connect.c:308
 msgid "repository on the other end cannot be shallow"
 msgstr "arkivet på andra sidan kan inte vara grunt"
 
-#: connect.c:313
+#: connect.c:347
 msgid "invalid packet"
 msgstr "ogiltigt paket"
 
-#: connect.c:333
+#: connect.c:367
 #, c-format
 msgid "protocol error: unexpected '%s'"
 msgstr "protokollfel: förväntade inte \"%s\""
 
-#: connect.c:441
+#: connect.c:473
+#, c-format
+msgid "unknown object format '%s' specified by server"
+msgstr "okänt objektformat \"%s\" angavs av servern"
+
+#: connect.c:500
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "ogiltigt svar på ls-refs: %s"
 
-#: connect.c:445
+#: connect.c:504
 msgid "expected flush after ref listing"
 msgstr "förväntade \"flush\" efter ref-listan"
 
-#: connect.c:544
+#: connect.c:507
+msgid "expected response end packet after ref listing"
+msgstr "förväntade svarsavslutningspaket efter ref-listan"
+
+#: connect.c:640
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "protokollet \"%s\" stöds inte"
 
-#: connect.c:595
+#: connect.c:691
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "kunde inte sätta SO_KEEPALIVE på uttaget"
 
-#: connect.c:635 connect.c:698
+#: connect.c:731 connect.c:794
 #, c-format
 msgid "Looking up %s ... "
 msgstr "Slår upp %s..."
 
-#: connect.c:639
+#: connect.c:735
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "kan inte slå upp %s (port %s) (%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:643 connect.c:714
+#: connect.c:739 connect.c:810
 #, c-format
 msgid ""
 "done.\n"
@@ -2785,7 +2826,7 @@
 "klart.\n"
 "Ansluter till %s (port %s)..."
 
-#: connect.c:665 connect.c:742
+#: connect.c:761 connect.c:838
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2795,75 +2836,75 @@
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:671 connect.c:748
+#: connect.c:767 connect.c:844
 msgid "done."
 msgstr "klart."
 
-#: connect.c:702
+#: connect.c:798
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "kunde inte slå upp %s (%s)"
 
-#: connect.c:708
+#: connect.c:804
 #, c-format
 msgid "unknown port %s"
 msgstr "okänd port %s"
 
-#: connect.c:845 connect.c:1175
+#: connect.c:941 connect.c:1271
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "konstigt värdnamn \"%s\" blockerat"
 
-#: connect.c:847
+#: connect.c:943
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "konstig port \"%s\" blockerad"
 
-#: connect.c:857
+#: connect.c:953
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "kan inte starta mellanserver (proxy) %s"
 
-#: connect.c:928
+#: connect.c:1024
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr "ingen sökväg angavs; se \"git help pull\" för giltig URL-syntax"
 
-#: connect.c:1123
+#: connect.c:1219
 msgid "ssh variant 'simple' does not support -4"
 msgstr "ssh-varianten \"simple\" stöder inte -4"
 
-#: connect.c:1135
+#: connect.c:1231
 msgid "ssh variant 'simple' does not support -6"
 msgstr "ssh-varianten \"simple\" stöder inte -6"
 
-#: connect.c:1152
+#: connect.c:1248
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "ssh-varianten \"simple\" stöder inte val av port"
 
-#: connect.c:1264
+#: connect.c:1360
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "konstigt sökvägsnamn \"%s\" blockerat"
 
-#: connect.c:1311
+#: connect.c:1407
 msgid "unable to fork"
 msgstr "kunde inte grena (fork)"
 
 # Vague original, not networking-related, but rather related to the actual
 # objects in the database.
-#: connected.c:107 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:109 builtin/fsck.c:209 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Kontrollerar konnektivitet"
 
-#: connected.c:119
+#: connected.c:121
 msgid "Could not run 'git rev-list'"
 msgstr "Kunde inte köra \"git rev-list\""
 
-#: connected.c:139
+#: connected.c:141
 msgid "failed write to rev-list"
 msgstr "kunde inte skriva till rev-list"
 
-#: connected.c:146
+#: connected.c:148
 msgid "failed to close rev-list's stdin"
 msgstr "kunde inte stänga rev-list:s standard in"
 
@@ -3127,17 +3168,17 @@
 "Inte ett git-arkiv. Använd --no-index för att jämföra två sökvägar utanför "
 "en arbetskatalog."
 
-#: diff.c:155
+#: diff.c:156
 #, c-format
 msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
 msgstr "  Misslyckades tolka dirstat-avskärningsprocentandel \"%s\"\n"
 
-#: diff.c:160
+#: diff.c:161
 #, c-format
 msgid "  Unknown dirstat parameter '%s'\n"
 msgstr "  Okänd dirstat-parameter \"%s\"\n"
 
-#: diff.c:296
+#: diff.c:297
 msgid ""
 "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
 "'dimmed-zebra', 'plain'"
@@ -3145,7 +3186,7 @@
 "färginställningen för flyttade block måste vara en av \"no\", \"default\", "
 "\"blocks\", \"zebra\", \"dimmed_zebra\", \"plain\""
 
-#: diff.c:324
+#: diff.c:325
 #, c-format
 msgid ""
 "unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', "
@@ -3155,7 +3196,7 @@
 "\", \"ignore-space-at-eol\", \"ignore-all-space\", \"allow-indentation-change"
 "\""
 
-#: diff.c:332
+#: diff.c:333
 msgid ""
 "color-moved-ws: allow-indentation-change cannot be combined with other "
 "whitespace modes"
@@ -3163,12 +3204,12 @@
 "color-moved-ws: allow-indentation-change kan inte kombineras med andra "
 "blankstegslägen"
 
-#: diff.c:405
+#: diff.c:410
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
 msgstr "Okänt värde för konfigurationsvariabeln \"diff.submodule\": \"%s\""
 
-#: diff.c:465
+#: diff.c:470
 #, c-format
 msgid ""
 "Found errors in 'diff.dirstat' config variable:\n"
@@ -3177,35 +3218,35 @@
 "Hittade fel i konfigurationsvariabeln \"diff.dirstat\":\n"
 "%s"
 
-#: diff.c:4238
+#: diff.c:4243
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "extern diff dog, stannar vid %s"
 
-#: diff.c:4583
+#: diff.c:4589
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, -check och -s är ömsesidigt uteslutande"
 
-#: diff.c:4586
+#: diff.c:4592
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S och --find-object är ömsesidigt uteslutande"
 
-#: diff.c:4664
+#: diff.c:4670
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow kräver exakt en sökvägsangivelse"
 
-#: diff.c:4712
+#: diff.c:4718
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "ogiltigt värde för --stat: %s"
 
-#: diff.c:4717 diff.c:4722 diff.c:4727 diff.c:4732 diff.c:5245
+#: diff.c:4723 diff.c:4728 diff.c:4733 diff.c:4738 diff.c:5250
 #: parse-options.c:197 parse-options.c:201
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s förväntar ett numeriskt värde"
 
-#: diff.c:4749
+#: diff.c:4755
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3214,42 +3255,42 @@
 "Misslyckades tolka argument till flaggan --dirstat/-X;\n"
 "%s"
 
-#: diff.c:4834
+#: diff.c:4840
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "okänd ändringsklass \"%c\" i --diff-filter=%s"
 
-#: diff.c:4858
+#: diff.c:4864
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "okänt värde efter ws-error-highlight=%.*s"
 
-#: diff.c:4872
+#: diff.c:4878
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "kunde inte slå upp \"%s\""
 
-#: diff.c:4922 diff.c:4928
+#: diff.c:4928 diff.c:4934
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s förväntar formen <n>/<m>"
 
-#: diff.c:4940
+#: diff.c:4946
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s förväntar ett tecken, fick \"%s\""
 
-#: diff.c:4961
+#: diff.c:4967
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "felaktigt argument till --color-moved: %s"
 
-#: diff.c:4980
+#: diff.c:4986
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "ogiltigt läge %s\" i --color-moved-ws"
 
-#: diff.c:5020
+#: diff.c:5026
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3257,149 +3298,149 @@
 "flaggan diff-algorithm godtar\"myers\", \"minimal\", \"patience\" och "
 "\"histogram\""
 
-#: diff.c:5056 diff.c:5076
+#: diff.c:5062 diff.c:5082
 #, c-format
 msgid "invalid argument to %s"
 msgstr "ogiltigt argument för %s"
 
-#: diff.c:5214
+#: diff.c:5219
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "misslyckades tolka argument till flaggan --submodule: \"%s\""
 
-#: diff.c:5270
+#: diff.c:5275
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "felaktigt argument --word-diff: %s"
 
-#: diff.c:5293
+#: diff.c:5298
 msgid "Diff output format options"
 msgstr "Formatflaggor för diff-utdata"
 
-#: diff.c:5295 diff.c:5301
+#: diff.c:5300 diff.c:5306
 msgid "generate patch"
 msgstr "skapar patch"
 
-#: diff.c:5298 builtin/log.c:177
+#: diff.c:5303 builtin/log.c:177
 msgid "suppress diff output"
 msgstr "undertryck diff-utdata"
 
-#: diff.c:5303 diff.c:5417 diff.c:5424
+#: diff.c:5308 diff.c:5422 diff.c:5429
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5304 diff.c:5307
+#: diff.c:5309 diff.c:5312
 msgid "generate diffs with <n> lines context"
 msgstr "skapa diffar med <n> rader sammanhang"
 
-#: diff.c:5309
+#: diff.c:5314
 msgid "generate the diff in raw format"
 msgstr "generera diff i råformat"
 
-#: diff.c:5312
+#: diff.c:5317
 msgid "synonym for '-p --raw'"
 msgstr "synonym till \"-p --raw\""
 
-#: diff.c:5316
+#: diff.c:5321
 msgid "synonym for '-p --stat'"
 msgstr "synonym till \"-p --stat\""
 
-#: diff.c:5320
+#: diff.c:5325
 msgid "machine friendly --stat"
 msgstr "maskinläsbar --stat"
 
-#: diff.c:5323
+#: diff.c:5328
 msgid "output only the last line of --stat"
 msgstr "skriv bara ut den sista raden för --stat"
 
-#: diff.c:5325 diff.c:5333
+#: diff.c:5330 diff.c:5338
 msgid "<param1,param2>..."
 msgstr "<param1,param2>..."
 
-#: diff.c:5326
+#: diff.c:5331
 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:5330
+#: diff.c:5335
 msgid "synonym for --dirstat=cumulative"
 msgstr "synonym för --dirstat=cumulative"
 
-#: diff.c:5334
+#: diff.c:5339
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "synonym för --dirstat=filer,param1,param2..."
 
-#: diff.c:5338
+#: diff.c:5343
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr "varna om ändringar introducerar konfliktmarkörer eller blankstegsfel"
 
-#: diff.c:5341
+#: diff.c:5346
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr "kortfattad summering såsom skapade, namnbyten och ändrade lägen"
 
-#: diff.c:5344
+#: diff.c:5349
 msgid "show only names of changed files"
 msgstr "visa endast namnen på ändrade filer"
 
-#: diff.c:5347
+#: diff.c:5352
 msgid "show only names and status of changed files"
 msgstr "visa endast namn och status för ändrade filer"
 
-#: diff.c:5349
+#: diff.c:5354
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<bredd>[,<namn-bredd>[,<antal>]]"
 
-#: diff.c:5350
+#: diff.c:5355
 msgid "generate diffstat"
 msgstr "skapa diffstat"
 
-#: diff.c:5352 diff.c:5355 diff.c:5358
+#: diff.c:5357 diff.c:5360 diff.c:5363
 msgid "<width>"
 msgstr "<bredd>"
 
-#: diff.c:5353
+#: diff.c:5358
 msgid "generate diffstat with a given width"
 msgstr "generera en diffstat med given bredd"
 
-#: diff.c:5356
+#: diff.c:5361
 msgid "generate diffstat with a given name width"
 msgstr "generera en diffstat med given namnbredd"
 
-#: diff.c:5359
+#: diff.c:5364
 msgid "generate diffstat with a given graph width"
 msgstr "generera en diffstat med given grafbredd"
 
-#: diff.c:5361
+#: diff.c:5366
 msgid "<count>"
 msgstr "<antal>"
 
-#: diff.c:5362
+#: diff.c:5367
 msgid "generate diffstat with limited lines"
 msgstr "generera diffstat med begränsade rader"
 
-#: diff.c:5365
+#: diff.c:5370
 msgid "generate compact summary in diffstat"
 msgstr "skapa kompakt översikt i diffstat"
 
-#: diff.c:5368
+#: diff.c:5373
 msgid "output a binary diff that can be applied"
 msgstr "skapa en binärdiff som kan appliceras"
 
-#: diff.c:5371
+#: diff.c:5376
 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:5373
+#: diff.c:5378
 msgid "show colored diff"
 msgstr "visa färgad diff"
 
-#: diff.c:5374
+#: diff.c:5379
 msgid "<kind>"
 msgstr "<typ>"
 
-#: diff.c:5375
+#: diff.c:5380
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3407,7 +3448,7 @@
 "ljusmarkera blankstegsfel i \"context\" (sammanhang), \"old\" (gamla) eller "
 "\"new\" (nya) rader i diffen"
 
-#: diff.c:5378
+#: diff.c:5383
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3415,87 +3456,87 @@
 "skriv inte om sökvägsnamn och använd NUL-tecken som fältseparerare i --raw "
 "eller --numstat"
 
-#: diff.c:5381 diff.c:5384 diff.c:5387 diff.c:5493
+#: diff.c:5386 diff.c:5389 diff.c:5392 diff.c:5498
 msgid "<prefix>"
 msgstr "<prefix>"
 
-#: diff.c:5382
+#: diff.c:5387
 msgid "show the given source prefix instead of \"a/\""
 msgstr "visa givet källprefix istället för \"a/\""
 
-#: diff.c:5385
+#: diff.c:5390
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "visa givet målprefix istället för \"b/\""
 
-#: diff.c:5388
+#: diff.c:5393
 msgid "prepend an additional prefix to every line of output"
 msgstr "lägg till ytterligare prefix på alla rader i utdata"
 
-#: diff.c:5391
+#: diff.c:5396
 msgid "do not show any source or destination prefix"
 msgstr "visa inte käll- eller målprefix"
 
-#: diff.c:5394
+#: diff.c:5399
 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:5398 diff.c:5403 diff.c:5408
+#: diff.c:5403 diff.c:5408 diff.c:5413
 msgid "<char>"
 msgstr "<tecken>"
 
-#: diff.c:5399
+#: diff.c:5404
 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:5404
+#: diff.c:5409
 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:5409
+#: diff.c:5414
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "ange tecken för att ange sammanhang istället för \" \""
 
-#: diff.c:5412
+#: diff.c:5417
 msgid "Diff rename options"
 msgstr "Diff-namnbytesflaggor"
 
-#: diff.c:5413
+#: diff.c:5418
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5414
+#: diff.c:5419
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "dela upp kompletta omskrivningar till ta bort och skapa-par"
 
-#: diff.c:5418
+#: diff.c:5423
 msgid "detect renames"
 msgstr "detektera namnändringar"
 
-#: diff.c:5422
+#: diff.c:5427
 msgid "omit the preimage for deletes"
 msgstr "ta bort för-version för borttagningar"
 
-#: diff.c:5425
+#: diff.c:5430
 msgid "detect copies"
 msgstr "detektera kopior"
 
-#: diff.c:5429
+#: diff.c:5434
 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:5431
+#: diff.c:5436
 msgid "disable rename detection"
 msgstr "inaktivera detektering av namnbyten"
 
-#: diff.c:5434
+#: diff.c:5439
 msgid "use empty blobs as rename source"
 msgstr "använd tomma blob:ar som namnändringskälla"
 
-#: diff.c:5436
+#: diff.c:5441
 msgid "continue listing the history of a file beyond renames"
 msgstr "fortsätt lista historiken för en fil bortom namnändringar"
 
-#: diff.c:5439
+#: diff.c:5444
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3503,159 +3544,159 @@
 "förhindra namnbyte/kopie-detektering om antalet namnbyten/kopior överskriver "
 "given gräns"
 
-#: diff.c:5441
+#: diff.c:5446
 msgid "Diff algorithm options"
 msgstr "Alternativ för diff-algoritm"
 
-#: diff.c:5443
+#: diff.c:5448
 msgid "produce the smallest possible diff"
 msgstr "skapa minsta möjliga diff"
 
-#: diff.c:5446
+#: diff.c:5451
 msgid "ignore whitespace when comparing lines"
 msgstr "ignorera blanktecken vid radjämförelse"
 
-#: diff.c:5449
+#: diff.c:5454
 msgid "ignore changes in amount of whitespace"
 msgstr "ignorera ändringar i antal blanktecken vid radjämförelse"
 
-#: diff.c:5452
+#: diff.c:5457
 msgid "ignore changes in whitespace at EOL"
 msgstr "ignorera blanktecken vid radslut"
 
-#: diff.c:5455
+#: diff.c:5460
 msgid "ignore carrier-return at the end of line"
 msgstr "ignorera CR-tecken vid radslut"
 
-#: diff.c:5458
+#: diff.c:5463
 msgid "ignore changes whose lines are all blank"
 msgstr "ignorera ändringar i rader som är helt blanka"
 
-#: diff.c:5461
+#: diff.c:5466
 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:5464
+#: diff.c:5469
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "skapa diffar med algoritmen \"patience diff\""
 
-#: diff.c:5468
+#: diff.c:5473
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "skapa diffar med algoritmen \"histogram diff\""
 
-#: diff.c:5470
+#: diff.c:5475
 msgid "<algorithm>"
 msgstr "<algoritm>"
 
-#: diff.c:5471
+#: diff.c:5476
 msgid "choose a diff algorithm"
 msgstr "välj en diff-algoritm"
 
-#: diff.c:5473
+#: diff.c:5478
 msgid "<text>"
 msgstr "<text>"
 
-#: diff.c:5474
+#: diff.c:5479
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "skapa diffar med algoritmen \"anchored diff\""
 
-#: diff.c:5476 diff.c:5485 diff.c:5488
+#: diff.c:5481 diff.c:5490 diff.c:5493
 msgid "<mode>"
 msgstr "<läge>"
 
-#: diff.c:5477
+#: diff.c:5482
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr "visa orddiff, där <läge> avgränsar ändrade ord"
 
-#: diff.c:5479 diff.c:5482 diff.c:5527
+#: diff.c:5484 diff.c:5487 diff.c:5532
 msgid "<regex>"
 msgstr "<reguttr>"
 
-#: diff.c:5480
+#: diff.c:5485
 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:5483
+#: diff.c:5488
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "motsvarar --word-diff=color --word-diff-regex=<reguttr>"
 
-#: diff.c:5486
+#: diff.c:5491
 msgid "moved lines of code are colored differently"
 msgstr "flyttade kodrader färgas på annat sätt"
 
-#: diff.c:5489
+#: diff.c:5494
 msgid "how white spaces are ignored in --color-moved"
 msgstr "hur blanktecken ignoreras i --color-moved"
 
-#: diff.c:5492
+#: diff.c:5497
 msgid "Other diff options"
 msgstr "Andra diff-flaggor"
 
-#: diff.c:5494
+#: diff.c:5499
 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:5498
+#: diff.c:5503
 msgid "treat all files as text"
 msgstr "hantera alla filer som text"
 
-#: diff.c:5500
+#: diff.c:5505
 msgid "swap two inputs, reverse the diff"
 msgstr "växla två indatafiler, vänd diffen"
 
-#: diff.c:5502
+#: diff.c:5507
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "avsluta med 1 vid ändringar, annars 0"
 
-#: diff.c:5504
+#: diff.c:5509
 msgid "disable all output of the program"
 msgstr "slå av alla utdata från programmet"
 
-#: diff.c:5506
+#: diff.c:5511
 msgid "allow an external diff helper to be executed"
 msgstr "tillåt köra en extern diff-hjälpare"
 
-#: diff.c:5508
+#: diff.c:5513
 msgid "run external text conversion filters when comparing binary files"
 msgstr "kör externt textkonverteringsfiler när binärfiler jämförs"
 
-#: diff.c:5510
+#: diff.c:5515
 msgid "<when>"
 msgstr "<när>"
 
-#: diff.c:5511
+#: diff.c:5516
 msgid "ignore changes to submodules in the diff generation"
 msgstr "ignorera ändringar i undermoduler när diffen skapas"
 
-#: diff.c:5514
+#: diff.c:5519
 msgid "<format>"
 msgstr "<format>"
 
-#: diff.c:5515
+#: diff.c:5520
 msgid "specify how differences in submodules are shown"
 msgstr "ange hur ändringar i undermoduler visas"
 
-#: diff.c:5519
+#: diff.c:5524
 msgid "hide 'git add -N' entries from the index"
 msgstr "dölj \"git add -N\"-poster från indexet"
 
-#: diff.c:5522
+#: diff.c:5527
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "tolka \"git add -N\"-poster som äkta i indexet"
 
-#: diff.c:5524
+#: diff.c:5529
 msgid "<string>"
 msgstr "<sträng>"
 
-#: diff.c:5525
+#: diff.c:5530
 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:5528
+#: diff.c:5533
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3663,54 +3704,54 @@
 "se efter ändringar som ändrar antalet förekomster av angivet reguljärt "
 "uttryck"
 
-#: diff.c:5531
+#: diff.c:5536
 msgid "show all changes in the changeset with -S or -G"
 msgstr "visa alla ändringar i ändringsuppsättningen med -S eller -G"
 
-#: diff.c:5534
+#: diff.c:5539
 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:5537
+#: diff.c:5542
 msgid "control the order in which files appear in the output"
 msgstr "styr ordningen i vilken filer visas i utdata"
 
-#: diff.c:5538
+#: diff.c:5543
 msgid "<object-id>"
 msgstr "<objekt-id>"
 
-#: diff.c:5539
+#: diff.c:5544
 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:5541
+#: diff.c:5546
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5542
+#: diff.c:5547
 msgid "select files by diff type"
 msgstr "välj filter efter diff-typ"
 
-#: diff.c:5544
+#: diff.c:5549
 msgid "<file>"
 msgstr "<fil>"
 
-#: diff.c:5545
+#: diff.c:5550
 msgid "Output to a specific file"
 msgstr "Skriv utdata till en specifik fil"
 
-#: diff.c:6200
+#: diff.c:6205
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 "onöjaktig namnbytesdetektering utfördes inte på grund av för många filer."
 
-#: diff.c:6203
+#: diff.c:6208
 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:6206
+#: diff.c:6211
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3726,61 +3767,61 @@
 msgid "Performing inexact rename detection"
 msgstr "Utför onöjaktig namnbytesdetektering"
 
-#: dir.c:555
+#: dir.c:573
 #, 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:695 dir.c:724 dir.c:737
+#: dir.c:713 dir.c:742 dir.c:755
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "okänt mönster: %s"
 
-#: dir.c:754 dir.c:768
+#: dir.c:772 dir.c:786
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "okänt negativt mönster: %s"
 
-#: dir.c:786
+#: dir.c:804
 #, 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:796
+#: dir.c:814
 msgid "disabling cone pattern matching"
 msgstr "inaktiverar konmönstermatchning"
 
-#: dir.c:1173
+#: dir.c:1191
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "kan inte använda %s som exkluderingsfil"
 
-#: dir.c:2275
+#: dir.c:2296
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "kunde inte öppna katalogen \"%s\""
 
-#: dir.c:2575
+#: dir.c:2596
 msgid "failed to get kernel name and information"
 msgstr "misslyckades hämta kärnans namn och information"
 
-#: dir.c:2699
+#: dir.c:2720
 msgid "untracked cache is disabled on this system or location"
 msgstr "ospårad cache är inaktiverad på systemet eller platsen"
 
-#: dir.c:3481
+#: dir.c:3502
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "indexfilen trasig i arkivet %s"
 
-#: dir.c:3526 dir.c:3531
+#: dir.c:3547 dir.c:3552
 #, c-format
 msgid "could not create directories for %s"
 msgstr "kunde inte skapa kataloger för %s"
 
-#: dir.c:3560
+#: dir.c:3581
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "kunde inte migrera git-katalog från \"%s\" till \"%s\""
@@ -3790,11 +3831,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:178
+#: entry.c:177
 msgid "Filtering content"
 msgstr "Filtrerar innehåll"
 
-#: entry.c:479
+#: entry.c:478
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "kunde inte ta status på filen \"%s\""
@@ -3814,228 +3855,246 @@
 msgid "too many args to run %s"
 msgstr "för många flaggor för att köra %s"
 
-#: fetch-pack.c:151
+#: fetch-pack.c:152
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: förväntade grund lista"
 
-#: fetch-pack.c:154
+#: fetch-pack.c:155
 msgid "git fetch-pack: expected a flush packet after shallow list"
 msgstr "git fetch-pack: förväntade ett flush-paket efter grund lista"
 
-#: fetch-pack.c:165
+#: fetch-pack.c:166
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack: förväntade ACK/NAK, fick flush-paket"
 
-#: fetch-pack.c:185
+#: fetch-pack.c:186
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack: förväntade ACK/NAK, fick \"%s\""
 
-#: fetch-pack.c:196
+#: fetch-pack.c:197
 msgid "unable to write to remote"
 msgstr "kunde inte skriva till fjärren"
 
-#: fetch-pack.c:258
+#: fetch-pack.c:259
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc kräver \"multi_ack_detailed\""
 
-#: fetch-pack.c:357 fetch-pack.c:1364
+#: fetch-pack.c:358 fetch-pack.c:1408
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "ogiltig \"shallow\"-rad: %s"
 
-#: fetch-pack.c:363 fetch-pack.c:1370
+#: fetch-pack.c:364 fetch-pack.c:1414
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "ogiltig \"unshallow\"-rad: %s"
 
-#: fetch-pack.c:365 fetch-pack.c:1372
+#: fetch-pack.c:366 fetch-pack.c:1416
 #, c-format
 msgid "object not found: %s"
 msgstr "objektet hittades inte: %s"
 
-#: fetch-pack.c:368 fetch-pack.c:1375
+#: fetch-pack.c:369 fetch-pack.c:1419
 #, c-format
 msgid "error in object: %s"
 msgstr "fel i objekt: %s"
 
-#: fetch-pack.c:370 fetch-pack.c:1377
+#: fetch-pack.c:371 fetch-pack.c:1421
 #, c-format
 msgid "no shallow found: %s"
 msgstr "ingen \"shallow\" hittades: %s"
 
-#: fetch-pack.c:373 fetch-pack.c:1381
+#: fetch-pack.c:374 fetch-pack.c:1425
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "förväntade shallow/unshallow, fick %s"
 
-#: fetch-pack.c:415
+#: fetch-pack.c:416
 #, c-format
 msgid "got %s %d %s"
 msgstr "fick %s %d %s"
 
-#: fetch-pack.c:432
+#: fetch-pack.c:433
 #, c-format
 msgid "invalid commit %s"
 msgstr "ogiltig incheckning %s"
 
-#: fetch-pack.c:463
+#: fetch-pack.c:464
 msgid "giving up"
 msgstr "ger upp"
 
-#: fetch-pack.c:476 progress.c:336
+#: fetch-pack.c:477 progress.c:336
 msgid "done"
 msgstr "klart"
 
-#: fetch-pack.c:488
+#: fetch-pack.c:489
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "fick %s (%d) %s"
 
-#: fetch-pack.c:534
+#: fetch-pack.c:535
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Markerar %s som komplett"
 
-#: fetch-pack.c:755
+#: fetch-pack.c:756
 #, c-format
 msgid "already have %s (%s)"
 msgstr "har redan %s (%s)"
 
-#: fetch-pack.c:819
+#: fetch-pack.c:821
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-patch: kunde inte grena av sidbandsmultiplexare"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:829
 msgid "protocol error: bad pack header"
 msgstr "protokollfel: felaktigt packhuvud"
 
-#: fetch-pack.c:901
+#: fetch-pack.c:910
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-patch: kunde inte grena av %s"
 
-#: fetch-pack.c:917
+#: fetch-pack.c:927
 #, c-format
 msgid "%s failed"
 msgstr "%s misslyckades"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:929
 msgid "error in sideband demultiplexer"
 msgstr "fel i sidbands-avmultiplexare"
 
-#: fetch-pack.c:966
+#: fetch-pack.c:976
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Serverversionen är %.*s"
 
-#: fetch-pack.c:971 fetch-pack.c:977 fetch-pack.c:980 fetch-pack.c:986
-#: fetch-pack.c:990 fetch-pack.c:994 fetch-pack.c:998 fetch-pack.c:1002
-#: fetch-pack.c:1006 fetch-pack.c:1010 fetch-pack.c:1014 fetch-pack.c:1018
-#: fetch-pack.c:1024 fetch-pack.c:1030 fetch-pack.c:1035 fetch-pack.c:1040
+#: fetch-pack.c:981 fetch-pack.c:987 fetch-pack.c:990 fetch-pack.c:996
+#: fetch-pack.c:1000 fetch-pack.c:1004 fetch-pack.c:1008 fetch-pack.c:1012
+#: fetch-pack.c:1016 fetch-pack.c:1020 fetch-pack.c:1024 fetch-pack.c:1028
+#: fetch-pack.c:1034 fetch-pack.c:1040 fetch-pack.c:1045 fetch-pack.c:1050
 #, c-format
 msgid "Server supports %s"
 msgstr "Servern stöder %s"
 
-#: fetch-pack.c:973
+#: fetch-pack.c:983
 msgid "Server does not support shallow clients"
 msgstr "Servern stöder inte klienter med grunda arkiv"
 
-#: fetch-pack.c:1033
+#: fetch-pack.c:1043
 msgid "Server does not support --shallow-since"
 msgstr "Servern stöder inte --shallow-since"
 
-#: fetch-pack.c:1038
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-exclude"
 msgstr "Servern stöder inte --shallow-exclude"
 
-#: fetch-pack.c:1042
+#: fetch-pack.c:1052
 msgid "Server does not support --deepen"
 msgstr "Servern stöder inte --deepen"
 
-#: fetch-pack.c:1059
+#: fetch-pack.c:1054
+msgid "Server does not support this repository's object format"
+msgstr "Servern stöder inte det här arkivets objektformat"
+
+#: fetch-pack.c:1071
 msgid "no common commits"
 msgstr "inga gemensamma incheckningar"
 
-#: fetch-pack.c:1071 fetch-pack.c:1563
+#: fetch-pack.c:1083 fetch-pack.c:1639
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-patch: hämtning misslyckades."
 
 #: fetch-pack.c:1211
+#, c-format
+msgid "mismatched algorithms: client %s; server %s"
+msgstr "omaka algoritmer: klient %s; server %s"
+
+#: fetch-pack.c:1215
+#, c-format
+msgid "the server does not support algorithm '%s'"
+msgstr "servern stöder inte algoritmen \"%s\""
+
+#: fetch-pack.c:1235
 msgid "Server does not support shallow requests"
 msgstr "Servern stöder inte grunda förfrågningar"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1242
 msgid "Server supports filter"
 msgstr "Servern stöder filter"
 
-#: fetch-pack.c:1242
+#: fetch-pack.c:1286
 msgid "unable to write request to remote"
 msgstr "kunde inte skriva anrop till fjärren"
 
-#: fetch-pack.c:1260
+#: fetch-pack.c:1304
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "fel vid läsning av styckehuvudet \"%s\""
 
-#: fetch-pack.c:1266
+#: fetch-pack.c:1310
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "förväntade \"%s\", tog emot \"%s\""
 
-#: fetch-pack.c:1327
+#: fetch-pack.c:1371
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
-msgstr "förväntade bekräftelserad: \"%s\""
+msgstr "oväntad bekräftelserad: \"%s\""
 
-#: fetch-pack.c:1332
+#: fetch-pack.c:1376
 #, c-format
 msgid "error processing acks: %d"
 msgstr "fel vid hantering av bekräftelser: %d"
 
-#: fetch-pack.c:1342
+#: fetch-pack.c:1386
 msgid "expected packfile to be sent after 'ready'"
 msgstr "väntade att paketfil skulle sändas efter \"ready\""
 
-#: fetch-pack.c:1344
+#: fetch-pack.c:1388
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr ""
 "väntade inte att några ytterligare sektioner skulle sändas efter \"ready\""
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1430
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "fel vid hantering av grund (\"shallow\") info: %d"
 
-#: fetch-pack.c:1433
+#: fetch-pack.c:1477
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "förväntade wanted-ref, fick %s"
 
-#: fetch-pack.c:1438
+#: fetch-pack.c:1482
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "oväntad wanted-ref: \"%s\""
 
-#: fetch-pack.c:1443
+#: fetch-pack.c:1487
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "fel vid hantering av önskade referenser: %d"
 
-#: fetch-pack.c:1789
+#: fetch-pack.c:1517
+msgid "git fetch-pack: expected response end packet"
+msgstr "git fetch-pack: förväntade svarsavslutningspaket"
+
+#: fetch-pack.c:1921
 msgid "no matching remote head"
 msgstr "inget motsvarande fjärrhuvud"
 
-#: fetch-pack.c:1812 builtin/clone.c:692
+#: fetch-pack.c:1944 builtin/clone.c:692
 msgid "remote did not send all necessary objects"
 msgstr "fjärren sände inte alla nödvändiga objekt"
 
-#: fetch-pack.c:1839
+#: fetch-pack.c:1971
 #, c-format
 msgid "no such remote ref %s"
 msgstr "ingen sådan fjärreferens: %s"
 
-#: fetch-pack.c:1842
+#: fetch-pack.c:1974
 #, 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"
@@ -4071,7 +4130,7 @@
 msgid "'%s': unable to read %s"
 msgstr "\"%s\" kunde inte läsa %s"
 
-#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:82
+#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:89
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
@@ -4216,16 +4275,16 @@
 "\n"
 "Mest lika kommandon är"
 
-#: help.c:653
+#: help.c:654
 msgid "git version [<options>]"
 msgstr "git version [<flaggor>]"
 
-#: help.c:708
+#: help.c:709
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:712
+#: help.c:713
 msgid ""
 "\n"
 "Did you mean this?"
@@ -4324,6 +4383,10 @@
 msgid "multiple filter-specs cannot be combined"
 msgstr "flera filterspecifikationer kan inte kombineras"
 
+#: list-objects-filter-options.c:330
+msgid "unable to upgrade repository format to support partial clone"
+msgstr "kunde inte uppgradera arkivformat till att stöda delvis klon"
+
 #: list-objects-filter.c:492
 #, c-format
 msgid "unable to access sparse blob in '%s'"
@@ -4690,7 +4753,7 @@
 msgid "Skipped %s (merged same as existing)"
 msgstr "Hoppade över %s (sammanslagen samma som befintlig)"
 
-#: merge-recursive.c:3101 git-submodule.sh:985
+#: merge-recursive.c:3101 git-submodule.sh:959
 msgid "submodule"
 msgstr "undermodul"
 
@@ -4817,7 +4880,7 @@
 msgstr "misslyckades läsa cachen"
 
 #: merge.c:108 rerere.c:720 builtin/am.c:1878 builtin/am.c:1912
-#: builtin/checkout.c:559 builtin/checkout.c:824 builtin/clone.c:816
+#: builtin/checkout.c:559 builtin/checkout.c:822 builtin/clone.c:816
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "kunde inte skriva ny indexfil"
@@ -5064,21 +5127,21 @@
 msgid "hash mismatch %s"
 msgstr "hashvärde stämmer inte överens %s"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2135
+#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2184
 #, c-format
 msgid "unable to get size of %s"
 msgstr "kan inte hämta storlek på %s"
 
-#: packfile.c:629
+#: packfile.c:630
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "offset före slutet av packfilen (trasig .idx?)"
 
-#: packfile.c:1899
+#: packfile.c:1900
 #, 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:1903
+#: packfile.c:1904
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "offset borton slutet av packindex för %s (trunkerat index?)"
@@ -5283,44 +5346,48 @@
 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"
+
+#: pkt-line.c:113
 msgid "flush packet write failed"
 msgstr "fel vid skrivning av \"flush\"-paket"
 
-#: pkt-line.c:146 pkt-line.c:232
+#: pkt-line.c:153 pkt-line.c:239
 msgid "protocol error: impossibly long line"
 msgstr "protokollfel: omöjligt lång rad"
 
-#: pkt-line.c:162 pkt-line.c:164
+#: pkt-line.c:169 pkt-line.c:171
 msgid "packet write with format failed"
 msgstr "paketskrivning med format misslyckades"
 
-#: pkt-line.c:196
+#: pkt-line.c:203
 msgid "packet write failed - data exceeds max packet size"
 msgstr "paketskrivning misslyckades - data överskrider maximal paketstorlek"
 
-#: pkt-line.c:203 pkt-line.c:210
+#: pkt-line.c:210 pkt-line.c:217
 msgid "packet write failed"
 msgstr "paketskrivning misslyckades"
 
-#: pkt-line.c:295
+#: pkt-line.c:302
 msgid "read error"
 msgstr "läsfel"
 
-#: pkt-line.c:303
+#: pkt-line.c:310
 msgid "the remote end hung up unexpectedly"
 msgstr "fjärren lade på oväntat"
 
-#: pkt-line.c:331
+#: pkt-line.c:338
 #, c-format
 msgid "protocol error: bad line length character: %.4s"
 msgstr "protokollfel: felaktig radlängdstecken: %.4s"
 
-#: pkt-line.c:341 pkt-line.c:346
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
 msgid "protocol error: bad line length %d"
 msgstr "protokollfel: felaktig radlängd: %d"
 
-#: pkt-line.c:362
+#: pkt-line.c:373
 #, c-format
 msgid "remote error: %s"
 msgstr "fjärrfel: %s"
@@ -5499,7 +5566,7 @@
 
 #: read-cache.c:1983 read-cache.c:2271 rerere.c:565 rerere.c:599 rerere.c:1111
 #: submodule.c:1619 builtin/add.c:532 builtin/check-ignore.c:181
-#: builtin/checkout.c:488 builtin/checkout.c:676 builtin/clean.c:961
+#: builtin/checkout.c:488 builtin/checkout.c:674 builtin/clean.c:991
 #: builtin/commit.c:364 builtin/diff-tree.c:121 builtin/grep.c:507
 #: builtin/mv.c:145 builtin/reset.c:247 builtin/rm.c:290
 #: builtin/submodule--helper.c:332
@@ -5556,7 +5623,7 @@
 msgid "broken index, expect %s in %s, got %s"
 msgstr "trasigt index, förväntade %s i %s, fick %s"
 
-#: read-cache.c:3026 strbuf.c:1176 wrapper.c:622 builtin/merge.c:1130
+#: read-cache.c:3026 strbuf.c:1171 wrapper.c:630 builtin/merge.c:1130
 #, c-format
 msgid "could not close '%s'"
 msgstr "kunde inte stänga \"%s\""
@@ -5743,7 +5810,7 @@
 msgid "could not read '%s'."
 msgstr "kunde inte läsa \"%s\"."
 
-#: ref-filter.c:42 wt-status.c:1936
+#: ref-filter.c:42 wt-status.c:1977
 msgid "gone"
 msgstr "försvunnen"
 
@@ -5968,7 +6035,7 @@
 msgid "ignoring ref with broken name %s"
 msgstr "ignorerar referens med trasigt namn %s"
 
-#: ref-filter.c:2095 refs.c:625
+#: ref-filter.c:2095 refs.c:657
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "ignorerar trasig referens %s"
@@ -5998,94 +6065,108 @@
 msgid "option `%s' must point to a commit"
 msgstr "flaggan \"%s\" måste peka på en incheckning"
 
-#: refs.c:262
+#: refs.c:264
 #, c-format
 msgid "%s does not point to a valid object!"
 msgstr "\"%s\" pekar inte på ett giltigt objekt!"
 
-#: refs.c:623
+#: refs.c:572
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr "kunde inte hämta \"%s\""
+
+#: refs.c:579
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "felaktigt namn på gren: %s = %s"
+
+#: refs.c:655
 #, c-format
 msgid "ignoring dangling symref %s"
 msgstr "ignorerar dinglande symbolisk referens %s"
 
-#: refs.c:760
+#: refs.c:792
 #, c-format
 msgid "could not open '%s' for writing: %s"
 msgstr "kunde inte öppna \"%s\" för skrivning: %s"
 
-#: refs.c:770 refs.c:821
+#: refs.c:802 refs.c:853
 #, c-format
 msgid "could not read ref '%s'"
 msgstr "Kunde inte läsa referensen \"%s\""
 
-#: refs.c:776
+#: refs.c:808
 #, c-format
 msgid "ref '%s' already exists"
 msgstr "referensen \"%s\" finns redan"
 
-#: refs.c:781
+#: refs.c:813
 #, c-format
 msgid "unexpected object ID when writing '%s'"
 msgstr "oväntat objekt-id vid skrivning \"%s\""
 
-#: refs.c:789 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
-#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1173
-#: wrapper.c:620
+#: refs.c:821 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
+#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1168
+#: wrapper.c:628
 #, c-format
 msgid "could not write to '%s'"
 msgstr "kunde inte skriva till \"%s\""
 
-#: refs.c:816 strbuf.c:1171 wrapper.c:188 wrapper.c:358 builtin/am.c:719
+#: refs.c:848 strbuf.c:1166 wrapper.c:196 wrapper.c:366 builtin/am.c:719
 #: builtin/rebase.c:852
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "kunde inte öppna \"%s\" för skrivning"
 
-#: refs.c:823
+#: refs.c:855
 #, c-format
 msgid "unexpected object ID when deleting '%s'"
 msgstr "oväntat objekt-id vid borttagning \"%s\""
 
-#: refs.c:954
+#: refs.c:986
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr "loggen för referensen %s har lucka efter %s"
 
-#: refs.c:960
+#: refs.c:992
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr "loggen för referensen %s slutade oväntat på %s"
 
-#: refs.c:1019
+#: refs.c:1051
 #, c-format
 msgid "log for %s is empty"
 msgstr "loggen för %s är tom"
 
-#: refs.c:1111
+#: refs.c:1143
 #, c-format
 msgid "refusing to update ref with bad name '%s'"
 msgstr "vägrar uppdatera referens med trasigt namn \"%s\""
 
-#: refs.c:1187
+#: refs.c:1219
 #, c-format
 msgid "update_ref failed for ref '%s': %s"
 msgstr "update_ref misslyckades för referensen \"%s\": %s"
 
-#: refs.c:1979
+#: refs.c:2011
 #, c-format
 msgid "multiple updates for ref '%s' not allowed"
 msgstr "flera uppdateringar för referensen \"%s\" tillåts inte"
 
-#: refs.c:2011
+#: refs.c:2098
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "referensuppdateringar förbjudna i karantänmiljö"
 
-#: refs.c:2107 refs.c:2137
+#: refs.c:2109
+msgid "ref updates aborted by hook"
+msgstr "referensuppdateringar avbrutna av krok"
+
+#: refs.c:2209 refs.c:2239
 #, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr "\"%s\" finns; kan inte skapa \"%s\""
 
-#: refs.c:2113 refs.c:2148
+#: refs.c:2215 refs.c:2250
 #, c-format
 msgid "cannot process '%s' and '%s' at the same time"
 msgstr "kan inte hantera \"%s\" och \"%s\" samtidigt"
@@ -6370,7 +6451,7 @@
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr "  (använd \"git pull\" för att slå ihop fjärrgrenen med din egen)\n"
 
-#: remote.c:2233
+#: remote.c:2241
 #, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr "kan inte tolka förväntat objektnamn \"%s\""
@@ -6497,20 +6578,20 @@
 msgid "failed to find tree of %s"
 msgstr "kunde inte hitta trädet för %s."
 
-#: revision.c:2655
+#: revision.c:2661
 msgid "your current branch appears to be broken"
 msgstr "din nuvarande gren verkar vara trasig"
 
-#: revision.c:2658
+#: revision.c:2664
 #, 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:2866
+#: revision.c:2873
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent är inkompatibelt med --bisect"
 
-#: revision.c:2870
+#: revision.c:2877
 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"
 
@@ -6550,11 +6631,15 @@
 msgid "failed to sign the push certificate"
 msgstr "misslyckades underteckna push-certifikatet"
 
-#: send-pack.c:399
+#: send-pack.c:394
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr "mottagarsidan stöder inte arkivets hashningsalgoritm"
+
+#: send-pack.c:403
 msgid "the receiving end does not support --signed push"
 msgstr "mottagarsidan stöder inte push med --signed"
 
-#: send-pack.c:401
+#: send-pack.c:405
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -6562,11 +6647,11 @@
 "sänder inte push-certifikat eftersom mottagarsidan inte stlder push med --"
 "signed"
 
-#: send-pack.c:413
+#: send-pack.c:417
 msgid "the receiving end does not support --atomic push"
 msgstr "mottagarsidan stöder inte push med --atomic"
 
-#: send-pack.c:418
+#: send-pack.c:422
 msgid "the receiving end does not support push options"
 msgstr "mottagarsidan stöder inte push-flaggor"
 
@@ -6687,7 +6772,7 @@
 msgid "unable to dequote value of '%s'"
 msgstr "kan inte ta bort citering av värdet \"%s\""
 
-#: sequencer.c:785 wrapper.c:190 wrapper.c:360 builtin/am.c:710
+#: sequencer.c:785 wrapper.c:198 wrapper.c:368 builtin/am.c:710
 #: builtin/am.c:802 builtin/merge.c:1125 builtin/rebase.c:896
 #, c-format
 msgid "could not open '%s' for reading"
@@ -7525,84 +7610,84 @@
 msgid "this operation must be run in a work tree"
 msgstr "funktionen måste köras i en arbetskatalog"
 
-#: setup.c:569
+#: setup.c:604
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Förväntade git-arkivversion <= %d, hittade %d"
 
-#: setup.c:577
+#: setup.c:612
 msgid "unknown repository extensions found:"
 msgstr "okända arkivutökningar hittades:"
 
-#: setup.c:596
+#: setup.c:631
 #, c-format
 msgid "error opening '%s'"
 msgstr "fel vid öppning av \"%s\""
 
-#: setup.c:598
+#: setup.c:633
 #, 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:600
+#: setup.c:635
 #, c-format
 msgid "error reading %s"
 msgstr "fel vid läsning av %s"
 
-#: setup.c:602
+#: setup.c:637
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "ogiltigt gitfilformat: %s"
 
-#: setup.c:604
+#: setup.c:639
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "ingen sökväg i gitfil: %s"
 
-#: setup.c:606
+#: setup.c:641
 #, c-format
 msgid "not a git repository: %s"
 msgstr "inte ett git-arkiv: %s"
 
-#: setup.c:708
+#: setup.c:743
 #, c-format
 msgid "'$%s' too big"
 msgstr "\"$%s\" för stor"
 
-#: setup.c:722
+#: setup.c:757
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "inte ett git-arkiv: \"%s\""
 
-#: setup.c:751 setup.c:753 setup.c:784
+#: setup.c:786 setup.c:788 setup.c:819
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "kan inte byta katalog (chdir) till \"%s\""
 
-#: setup.c:756 setup.c:812 setup.c:822 setup.c:861 setup.c:869
+#: setup.c:791 setup.c:847 setup.c:857 setup.c:896 setup.c:904
 msgid "cannot come back to cwd"
 msgstr "kan inte gå tillbaka till arbetskatalogen (cwd)"
 
-#: setup.c:883
+#: setup.c:918
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "misslyckades ta status på \"%*ss%s%s\""
 
-#: setup.c:1121
+#: setup.c:1156
 msgid "Unable to read current working directory"
 msgstr "Kan inte läsa aktuell arbetskatalog"
 
-#: setup.c:1130 setup.c:1136
+#: setup.c:1165 setup.c:1171
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "kan inte byta till \"%s\""
 
-#: setup.c:1141
+#: setup.c:1176
 #, 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:1147
+#: setup.c:1182
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -7612,7 +7697,7 @@
 "monteringspunkten %s)\n"
 "Stoppar vid filsystemsgräns (GIT_DISCOVERY_ACROSS_FILESYSTEM är inte satt)."
 
-#: setup.c:1258
+#: setup.c:1293
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -7621,15 +7706,15 @@
 "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:1304
+#: setup.c:1340
 msgid "open /dev/null or dup failed"
 msgstr "misslyckades öppna /dev/null eller \"dup\""
 
-#: setup.c:1319
+#: setup.c:1355
 msgid "fork failed"
 msgstr "\"fork\" misslyckades"
 
-#: setup.c:1324
+#: setup.c:1360
 msgid "setsid failed"
 msgstr "\"setsid\" misslyckades"
 
@@ -7810,7 +7895,7 @@
 msgid "confused by unstable object source data for %s"
 msgstr "förvirrad av instabil objektkälldata för %s"
 
-#: sha1-file.c:1906 builtin/pack-objects.c:1055
+#: sha1-file.c:1906 builtin/pack-objects.c:1085
 #, c-format
 msgid "failed utime() on %s"
 msgstr "\"utime()\" misslyckades på %s"
@@ -7986,43 +8071,43 @@
 msgstr "felaktigt objektnamn \"%.*s\"."
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
-#: strbuf.c:853
+#: strbuf.c:848
 #, c-format
 msgid "%u.%2.2u GiB"
 msgstr "%u,%2.2u GiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
-#: strbuf.c:855
+#: strbuf.c:850
 #, c-format
 msgid "%u.%2.2u GiB/s"
 msgstr "%u,%2.2u GiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte
-#: strbuf.c:863
+#: strbuf.c:858
 #, c-format
 msgid "%u.%2.2u MiB"
 msgstr "%u,%2.2u MiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
-#: strbuf.c:865
+#: strbuf.c:860
 #, c-format
 msgid "%u.%2.2u MiB/s"
 msgstr "%u,%2.2u MiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte
-#: strbuf.c:872
+#: strbuf.c:867
 #, c-format
 msgid "%u.%2.2u KiB"
 msgstr "%u,%2.2u KiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
-#: strbuf.c:874
+#: strbuf.c:869
 #, c-format
 msgid "%u.%2.2u KiB/s"
 msgstr "%u,%2.2u KiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte
-#: strbuf.c:880
+#: strbuf.c:875
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -8030,14 +8115,14 @@
 msgstr[1] "%u bytes"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte/second
-#: strbuf.c:882
+#: strbuf.c:877
 #, c-format
 msgid "%u byte/s"
 msgid_plural "%u bytes/s"
 msgstr[0] "%u byte/s"
 msgstr[1] "%u bytes/s"
 
-#: strbuf.c:1180
+#: strbuf.c:1175
 #, c-format
 msgid "could not edit '%s'"
 msgstr "kunde inte redigera \"%s\""
@@ -8284,7 +8369,7 @@
 msgid "could not read from stdin"
 msgstr "kunde inte läsa från standard in"
 
-#: trailer.c:1011 wrapper.c:665
+#: trailer.c:1011 wrapper.c:673
 #, c-format
 msgid "could not stat %s"
 msgstr "kunde inte ta status på %s"
@@ -8308,20 +8393,20 @@
 msgid "could not rename temporary file to %s"
 msgstr "kunde inte byta namn på temporär fil till %s"
 
-#: transport-helper.c:61 transport-helper.c:90
+#: transport-helper.c:62 transport-helper.c:91
 msgid "full write to remote helper failed"
 msgstr "komplett skrivning till fjärrhjälpare misslyckades"
 
-#: transport-helper.c:144
+#: transport-helper.c:145
 #, c-format
 msgid "unable to find remote helper for '%s'"
 msgstr "kan inte hitta fjärrhjälpare för \"%s\""
 
-#: transport-helper.c:160 transport-helper.c:571
+#: transport-helper.c:161 transport-helper.c:575
 msgid "can't dup helper output fd"
 msgstr "kunde inte duplicera utdata-filhandtag"
 
-#: transport-helper.c:211
+#: transport-helper.c:214
 #, c-format
 msgid ""
 "unknown mandatory capability %s; this remote helper probably needs newer "
@@ -8330,159 +8415,164 @@
 "okänd krävd förmåga (capability) %s; fjärrhjälparen behöver antagligen en "
 "nyare version av Git"
 
-#: transport-helper.c:217
+#: transport-helper.c:220
 msgid "this remote helper should implement refspec capability"
 msgstr ""
 "fjärrhjälparen behöver implementera förmåga för referensspecifikationer "
 "(refspec)"
 
-#: transport-helper.c:284 transport-helper.c:425
+#: transport-helper.c:287 transport-helper.c:429
 #, c-format
 msgid "%s unexpectedly said: '%s'"
 msgstr "%s sade oväntat: \"%s\""
 
-#: transport-helper.c:414
+#: transport-helper.c:417
 #, c-format
 msgid "%s also locked %s"
 msgstr "%s låste också %s"
 
-#: transport-helper.c:493
+#: transport-helper.c:497
 msgid "couldn't run fast-import"
 msgstr "kunde inte köra fast-import"
 
-#: transport-helper.c:516
+#: transport-helper.c:520
 msgid "error while running fast-import"
 msgstr "fel när fast-import kördes"
 
-#: transport-helper.c:545 transport-helper.c:1135
+#: transport-helper.c:549 transport-helper.c:1156
 #, c-format
 msgid "could not read ref %s"
 msgstr "kunde inte läsa referensen %s"
 
-#: transport-helper.c:590
+#: transport-helper.c:594
 #, c-format
 msgid "unknown response to connect: %s"
 msgstr "okänt svar på ansluntning: %s"
 
-#: transport-helper.c:612
+#: transport-helper.c:616
 msgid "setting remote service path not supported by protocol"
 msgstr "protkollet stöder inte att sätta sökväg till fjärrtjänst"
 
-#: transport-helper.c:614
+#: transport-helper.c:618
 msgid "invalid remote service path"
 msgstr "felaktig sökväg till fjärrtjänst"
 
-#: transport-helper.c:657 transport.c:1339
+#: transport-helper.c:661 transport.c:1347
 msgid "operation not supported by protocol"
 msgstr "funktionen stöds inte av protokollet"
 
-#: transport-helper.c:660
+#: transport-helper.c:664
 #, c-format
 msgid "can't connect to subservice %s"
 msgstr "kan inte ansluta till undertjänsten %s"
 
-#: transport-helper.c:736
+#: transport-helper.c:740
 #, c-format
 msgid "expected ok/error, helper said '%s'"
 msgstr "förväntade ok/error, hjälpprogrammet svarade \"%s\""
 
-#: transport-helper.c:789
+#: transport-helper.c:793
 #, c-format
 msgid "helper reported unexpected status of %s"
 msgstr "hjälparen returnerade oväntad status %s"
 
-#: transport-helper.c:850
+#: transport-helper.c:854
 #, c-format
 msgid "helper %s does not support dry-run"
 msgstr "hjälparen %s stöder inte dry-run"
 
-#: transport-helper.c:853
+#: transport-helper.c:857
 #, c-format
 msgid "helper %s does not support --signed"
 msgstr "hjälparen %s stöder inte --signed"
 
-#: transport-helper.c:856
+#: transport-helper.c:860
 #, c-format
 msgid "helper %s does not support --signed=if-asked"
 msgstr "hjälparen %s stöder inte --signed=if-asked"
 
-#: transport-helper.c:861
+#: transport-helper.c:865
 #, c-format
 msgid "helper %s does not support --atomic"
 msgstr "hjälparen %s stöder inte --atomic"
 
-#: transport-helper.c:867
+#: transport-helper.c:871
 #, c-format
 msgid "helper %s does not support 'push-option'"
 msgstr "hjälparen %s stöder inte \"push-option\""
 
-#: transport-helper.c:966
+#: transport-helper.c:970
 msgid "remote-helper doesn't support push; refspec needed"
 msgstr "fjärrhjälparen stöder inte push; referensspecifikation krävs"
 
-#: transport-helper.c:971
+#: transport-helper.c:975
 #, c-format
 msgid "helper %s does not support 'force'"
 msgstr "hjälparen %s stöder inte \"force\""
 
-#: transport-helper.c:1018
+#: transport-helper.c:1022
 msgid "couldn't run fast-export"
 msgstr "kunde inte köra fast-export"
 
-#: transport-helper.c:1023
+#: transport-helper.c:1027
 msgid "error while running fast-export"
 msgstr "fel vid körning av fast-export"
 
-#: transport-helper.c:1048
+#: transport-helper.c:1052
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
-"Perhaps you should specify a branch such as 'master'.\n"
+"Perhaps you should specify a branch.\n"
 msgstr ""
 "Inga gemensamma referenser och inga angavs; gör inget.\n"
-"Du kanske borde ange en gren såsom \"master\".\n"
+"Du kanske borde ange en gren.\n"
 
-#: transport-helper.c:1121
+#: transport-helper.c:1133
+#, c-format
+msgid "unsupported object format '%s'"
+msgstr "objektformatet \"%s\" stöds ej"
+
+#: transport-helper.c:1142
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "felformat svar i referenslistan: %s"
 
-#: transport-helper.c:1273
+#: transport-helper.c:1294
 #, c-format
 msgid "read(%s) failed"
 msgstr "läs(%s) misslyckades"
 
-#: transport-helper.c:1300
+#: transport-helper.c:1321
 #, c-format
 msgid "write(%s) failed"
 msgstr "skriv(%s) misslyckades"
 
-#: transport-helper.c:1349
+#: transport-helper.c:1370
 #, c-format
 msgid "%s thread failed"
 msgstr "%s-tråden misslyckades"
 
-#: transport-helper.c:1353
+#: transport-helper.c:1374
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "%s-tråden misslyckades ansluta: %s"
 
-#: transport-helper.c:1372 transport-helper.c:1376
+#: transport-helper.c:1393 transport-helper.c:1397
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "kan inte starta tråd för kopiering av data: %s"
 
-#: transport-helper.c:1413
+#: transport-helper.c:1434
 #, c-format
 msgid "%s process failed to wait"
 msgstr "processen %s misslyckades vänta"
 
-#: transport-helper.c:1417
+#: transport-helper.c:1438
 #, c-format
 msgid "%s process failed"
 msgstr "processen %s misslyckades"
 
-#: transport-helper.c:1435 transport-helper.c:1444
+#: transport-helper.c:1456 transport-helper.c:1465
 msgid "can't start thread for copying data"
 msgstr "kan inte skapa tråd för kopiering av data"
 
@@ -8496,33 +8586,33 @@
 msgid "could not read bundle '%s'"
 msgstr "kunde inte läsa paketet (bundlen) \"%s\""
 
-#: transport.c:214
+#: transport.c:220
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport: ogiltig flagga för depth: \"%s\""
 
-#: transport.c:266
+#: transport.c:272
 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:267
+#: transport.c:273
 msgid "server options require protocol version 2 or later"
 msgstr "serverflaggor kräver protokollversion 2 eller senare"
 
-#: transport.c:632
+#: transport.c:631
 msgid "could not parse transport.color.* config"
 msgstr "kunde inte tolka inställningen för transport.color.*"
 
-#: transport.c:705
+#: transport.c:704
 msgid "support for protocol v2 not implemented yet"
 msgstr "stöd för protokoll v2 ännu ej implementerat"
 
-#: transport.c:839
+#: transport.c:838
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "okänt värde för inställningen \"%s\": %s"
 
-#: transport.c:905
+#: transport.c:904
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "transporten \"%s\" tillåts inte"
@@ -8531,7 +8621,7 @@
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync stöds inte längre"
 
-#: transport.c:1052
+#: transport.c:1059
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -8540,7 +8630,7 @@
 "Följande undermodulsökvägar innehåller ändringar som\n"
 "inte kan hittas av fjärrarna:\n"
 
-#: transport.c:1056
+#: transport.c:1063
 #, c-format
 msgid ""
 "\n"
@@ -8567,11 +8657,11 @@
 "för att sända dem till fjärren.\n"
 "\n"
 
-#: transport.c:1064
+#: transport.c:1071
 msgid "Aborting."
 msgstr "Avbryter."
 
-#: transport.c:1209
+#: transport.c:1216
 msgid "failed to push all needed submodules"
 msgstr "kunde inte sända alla nödvändiga undermoduler"
 
@@ -8850,7 +8940,7 @@
 msgid "Updating index flags"
 msgstr "Uppdaterar indexflaggor"
 
-#: upload-pack.c:1337
+#: upload-pack.c:1415
 msgid "expected flush after fetch arguments"
 msgstr "förväntade \"flush\" efter \"fetch\"-argument"
 
@@ -8887,47 +8977,47 @@
 msgid "Fetching objects"
 msgstr "Hämtar objekt"
 
-#: worktree.c:262 builtin/am.c:2098
+#: worktree.c:248 builtin/am.c:2098
 #, c-format
 msgid "failed to read '%s'"
 msgstr "misslyckades läsa \"%s\""
 
-#: worktree.c:309
+#: worktree.c:295
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "\"%s\" i huvudarbetskatalogen är inte arkivkatalogen"
 
-#: worktree.c:320
+#: worktree.c:306
 #, 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:332
+#: worktree.c:318
 #, c-format
 msgid "'%s' does not exist"
 msgstr "\"%s\" finns inte"
 
-#: worktree.c:338
+#: worktree.c:324
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "\"%s\" är inte en .git-fil, felkod %d"
 
-#: worktree.c:347
+#: worktree.c:333
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "\"%s\" pekar inte tillbaka till \"%s\""
 
-#: wrapper.c:186 wrapper.c:356
+#: wrapper.c:194 wrapper.c:364
 #, c-format
 msgid "could not open '%s' for reading and writing"
 msgstr "kunde inte öppna \"%s\" för läsning och skrivning"
 
-#: wrapper.c:387 wrapper.c:588
+#: wrapper.c:395 wrapper.c:596
 #, c-format
 msgid "unable to access '%s'"
 msgstr "kan inte komma åt \"%s\""
 
-#: wrapper.c:596
+#: wrapper.c:604
 msgid "unable to get current working directory"
 msgstr "kan inte hämta aktuell arbetskatalog"
 
@@ -9314,39 +9404,44 @@
 msgstr ""
 "  (använd \"git bisect reset\" för att komma tillbaka till ursprungsgrenen)"
 
-#: wt-status.c:1692
+#: wt-status.c:1494
+#, 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:1733
 msgid "On branch "
 msgstr "På grenen "
 
-#: wt-status.c:1699
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "interaktiv ombasering pågår; ovanpå "
 
-#: wt-status.c:1701
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "ombasering pågår; ovanpå "
 
-#: wt-status.c:1711
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Inte på någon gren för närvarande."
 
-#: wt-status.c:1728
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "Första incheckning"
 
-#: wt-status.c:1729
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "Inga incheckningar ännu"
 
-#: wt-status.c:1743
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "Ospårade filer"
 
-#: wt-status.c:1745
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "Ignorerade filer"
 
-#: wt-status.c:1749
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9358,32 +9453,32 @@
 "lägga till nya filer själv (se \"git help status\")."
 
 # %s är nästa sträng eller tom.
-#: wt-status.c:1755
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Ospårade filer visas ej%s"
 
-#: wt-status.c:1757
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (använd flaggan -u för att visa ospårade filer)"
 
-#: wt-status.c:1763
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Inga ändringar"
 
-#: wt-status.c:1768
+#: wt-status.c:1809
 #, 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:1771
+#: wt-status.c:1812
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "inga ändringar att checka in\n"
 
-#: wt-status.c:1774
+#: wt-status.c:1815
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9392,62 +9487,62 @@
 "inget köat för incheckning, men ospårade filer finns (spåra med \"git add"
 "\")\n"
 
-#: wt-status.c:1777
+#: wt-status.c:1818
 #, 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:1780
+#: wt-status.c:1821
 #, 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:1783 wt-status.c:1788
+#: wt-status.c:1824 wt-status.c:1829
 #, c-format
 msgid "nothing to commit\n"
 msgstr "inget att checka in\n"
 
-#: wt-status.c:1786
+#: wt-status.c:1827
 #, 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:1790
+#: wt-status.c:1831
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "inget att checka in, arbetskatalogen ren\n"
 
-#: wt-status.c:1903
+#: wt-status.c:1944
 msgid "No commits yet on "
 msgstr "Inga incheckningar ännu på "
 
-#: wt-status.c:1907
+#: wt-status.c:1948
 msgid "HEAD (no branch)"
 msgstr "HEAD (ingen gren)"
 
-#: wt-status.c:1938
+#: wt-status.c:1979
 msgid "different"
 msgstr "olika"
 
-#: wt-status.c:1940 wt-status.c:1948
+#: wt-status.c:1981 wt-status.c:1989
 msgid "behind "
 msgstr "efter "
 
-#: wt-status.c:1943 wt-status.c:1946
+#: wt-status.c:1984 wt-status.c:1987
 msgid "ahead "
 msgstr "före "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2468
+#: wt-status.c:2509
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "kan inte %s: Du har oköade ändringar."
 
-#: wt-status.c:2474
+#: wt-status.c:2515
 msgid "additionally, your index contains uncommitted changes."
 msgstr "dessutom innehåller dit index ändringar som inte har checkats in."
 
-#: wt-status.c:2476
+#: wt-status.c:2517
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "kan inte %s: Ditt index innehåller ändringar som inte checkats in."
@@ -9524,7 +9619,7 @@
 msgid "interactive picking"
 msgstr "plocka interaktivt"
 
-#: builtin/add.c:326 builtin/checkout.c:1535 builtin/reset.c:308
+#: builtin/add.c:326 builtin/checkout.c:1533 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "välj stycken interaktivt"
 
@@ -9651,12 +9746,12 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "--chmod-parametern \"%s\" måste antingen vara -x eller +x"
 
-#: builtin/add.c:501 builtin/checkout.c:1703 builtin/commit.c:351
+#: builtin/add.c:501 builtin/checkout.c:1701 builtin/commit.c:351
 #: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1506
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file är inkompatibelt med sökvägsangivelsesparametrar"
 
-#: builtin/add.c:508 builtin/checkout.c:1715 builtin/commit.c:357
+#: builtin/add.c:508 builtin/checkout.c:1713 builtin/commit.c:357
 #: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1512
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul kräver --pathspec-from-file"
@@ -9921,7 +10016,7 @@
 msgid "allow fall back on 3way merging if needed"
 msgstr "tillåt falla tillbaka på trevägssammanslagning om nödvändigt"
 
-#: builtin/am.c:2218 builtin/init-db.c:541 builtin/prune-packed.c:16
+#: builtin/am.c:2218 builtin/init-db.c:559 builtin/prune-packed.c:16
 #: builtin/repack.c:306 builtin/stash.c:816
 msgid "be quiet"
 msgstr "var tyst"
@@ -9976,7 +10071,7 @@
 
 #: builtin/am.c:2262 builtin/branch.c:659 builtin/for-each-ref.c:38
 #: builtin/replace.c:556 builtin/tag.c:438 builtin/verify-tag.c:38
-#: bugreport.c:131
+#: bugreport.c:137
 msgid "format"
 msgstr "format"
 
@@ -10271,113 +10366,117 @@
 "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:478
+#: builtin/bisect--helper.c:460 builtin/bisect--helper.c:473
+msgid "'' is not a valid term"
+msgstr "\"\" är inte en giltig term"
+
+#: builtin/bisect--helper.c:483
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "okänd flagga: %s"
 
-#: builtin/bisect--helper.c:482
+#: builtin/bisect--helper.c:487
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "\"%s\" verkar inte vara en giltig revision"
 
-#: builtin/bisect--helper.c:514
+#: builtin/bisect--helper.c:519
 msgid "bad HEAD - I need a HEAD"
 msgstr "felaktigt HEAD - Jag behöver ett HEAD"
 
-#: builtin/bisect--helper.c:529
+#: builtin/bisect--helper.c:534
 #, 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:550
+#: builtin/bisect--helper.c:555
 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:553
+#: builtin/bisect--helper.c:558
 msgid "bad HEAD - strange symbolic ref"
 msgstr "felaktigt HEAD - konstig symbolisk referens"
 
-#: builtin/bisect--helper.c:577
+#: builtin/bisect--helper.c:582
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "ogiltig referens: \"%s\""
 
-#: builtin/bisect--helper.c:633
+#: builtin/bisect--helper.c:638
 msgid "perform 'git bisect next'"
 msgstr "utför 'git bisect next'"
 
-#: builtin/bisect--helper.c:635
+#: builtin/bisect--helper.c:640
 msgid "write the terms to .git/BISECT_TERMS"
 msgstr "skriv termerna i .git/BISECT_TERMS"
 
-#: builtin/bisect--helper.c:637
+#: builtin/bisect--helper.c:642
 msgid "cleanup the bisection state"
 msgstr "städar upp bisect-tillstånd"
 
-#: builtin/bisect--helper.c:639
+#: builtin/bisect--helper.c:644
 msgid "check for expected revs"
 msgstr "kontrollera för förväntade versioner"
 
-#: builtin/bisect--helper.c:641
+#: builtin/bisect--helper.c:646
 msgid "reset the bisection state"
 msgstr "återställ bisect-tillstånd"
 
-#: builtin/bisect--helper.c:643
+#: builtin/bisect--helper.c:648
 msgid "write out the bisection state in BISECT_LOG"
 msgstr "skriver bisect-tillståndet i BISECT_LOG"
 
-#: builtin/bisect--helper.c:645
+#: builtin/bisect--helper.c:650
 msgid "check and set terms in a bisection state"
 msgstr "visa och ange termer för bisect-tillstånd"
 
-#: builtin/bisect--helper.c:647
+#: builtin/bisect--helper.c:652
 msgid "check whether bad or good terms exist"
 msgstr "se efter om termer för rätt och fel finns"
 
-#: builtin/bisect--helper.c:649
+#: builtin/bisect--helper.c:654
 msgid "print out the bisect terms"
 msgstr "skriv ut termer för bisect"
 
-#: builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:656
 msgid "start the bisect session"
 msgstr "påbörja bisect-körningen"
 
-#: builtin/bisect--helper.c:653
+#: builtin/bisect--helper.c:658
 msgid "update BISECT_HEAD instead of checking out the current commit"
 msgstr "uppdatera BISECT_HEAD istället för att checka ut aktuell incheckning"
 
-#: builtin/bisect--helper.c:655
+#: builtin/bisect--helper.c:660
 msgid "no log for BISECT_WRITE"
 msgstr "ingen logg för BISECT_WRITE"
 
-#: builtin/bisect--helper.c:673
+#: builtin/bisect--helper.c:678
 msgid "--write-terms requires two arguments"
 msgstr "--write-terms kräver två argument"
 
-#: builtin/bisect--helper.c:677
+#: builtin/bisect--helper.c:682
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state tar inga argument"
 
-#: builtin/bisect--helper.c:684
+#: builtin/bisect--helper.c:689
 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:688
+#: builtin/bisect--helper.c:693
 msgid "--bisect-write requires either 4 or 5 arguments"
 msgstr "--bisect-write kräver antingen 4 eller 5 argument"
 
-#: builtin/bisect--helper.c:694
+#: builtin/bisect--helper.c:699
 msgid "--check-and-set-terms requires 3 arguments"
 msgstr "--check-and-set-terms kräver tre argument"
 
-#: builtin/bisect--helper.c:700
+#: builtin/bisect--helper.c:705
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check kräver 2 eller 3 argument"
 
-#: builtin/bisect--helper.c:706
+#: builtin/bisect--helper.c:711
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms kräver noll eller ett argument"
 
@@ -10977,19 +11076,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <fil> [<refnamn>...]"
 
-#: builtin/bundle.c:66 builtin/pack-objects.c:3376
+#: builtin/bundle.c:66 builtin/pack-objects.c:3448
 msgid "do not show progress meter"
 msgstr "visa inte förloppsindikator"
 
-#: builtin/bundle.c:68 builtin/pack-objects.c:3378
+#: builtin/bundle.c:68 builtin/pack-objects.c:3450
 msgid "show progress meter"
 msgstr "visa förloppsindikator"
 
-#: builtin/bundle.c:70 builtin/pack-objects.c:3380
+#: builtin/bundle.c:70 builtin/pack-objects.c:3452
 msgid "show progress meter during object writing phase"
 msgstr "visa förloppsindikator under objektskrivningsfasen"
 
-#: builtin/bundle.c:73 builtin/pack-objects.c:3383
+#: builtin/bundle.c:73 builtin/pack-objects.c:3455
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "som --all-progress när förloppsindikatorn visas"
 
@@ -11029,11 +11128,11 @@
 
 #: builtin/cat-file.c:599
 msgid ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 msgstr ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 
 #: builtin/cat-file.c:620
 msgid "only one batch option may be specified"
@@ -11067,7 +11166,7 @@
 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 git-submodule.sh:984
+#: builtin/cat-file.c:648 git-submodule.sh:958
 msgid "blob"
 msgstr "blob"
 
@@ -11128,8 +11227,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:1488 builtin/gc.c:537
-#: builtin/worktree.c:502
+#: builtin/check-ignore.c:21 builtin/checkout.c:1486 builtin/gc.c:537
+#: builtin/worktree.c:561
 msgid "suppress progress reporting"
 msgstr "undertryck förloppsrapportering"
 
@@ -11221,7 +11320,7 @@
 #: builtin/checkout-index.c:178 builtin/column.c:31
 #: builtin/submodule--helper.c:1400 builtin/submodule--helper.c:1403
 #: builtin/submodule--helper.c:1411 builtin/submodule--helper.c:1909
-#: builtin/worktree.c:675
+#: builtin/worktree.c:754
 msgid "string"
 msgstr "sträng"
 
@@ -11336,11 +11435,11 @@
 msgid "path '%s' is unmerged"
 msgstr "sökvägen \"%s\" har inte slagits ihop"
 
-#: builtin/checkout.c:704
+#: builtin/checkout.c:702
 msgid "you need to resolve your current index first"
 msgstr "du måste lösa ditt befintliga index först"
 
-#: builtin/checkout.c:758
+#: builtin/checkout.c:756
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11349,50 +11448,50 @@
 "kan inte fortsätta med köade ändringar i följande filer:\n"
 "%s"
 
-#: builtin/checkout.c:861
+#: builtin/checkout.c:859
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Kan inte skapa referenslogg för \"%s\": %s\n"
 
-#: builtin/checkout.c:903
+#: builtin/checkout.c:901
 msgid "HEAD is now at"
 msgstr "HEAD är nu på"
 
-#: builtin/checkout.c:907 builtin/clone.c:720
+#: builtin/checkout.c:905 builtin/clone.c:720
 msgid "unable to update HEAD"
 msgstr "kan inte uppdatera HEAD"
 
-#: builtin/checkout.c:911
+#: builtin/checkout.c:909
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Återställ gren \"%s\"\n"
 
-#: builtin/checkout.c:914
+#: builtin/checkout.c:912
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Redan på \"%s\"\n"
 
-#: builtin/checkout.c:918
+#: builtin/checkout.c:916
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Växlade till och nollställde grenen \"%s\"\n"
 
-#: builtin/checkout.c:920 builtin/checkout.c:1344
+#: builtin/checkout.c:918 builtin/checkout.c:1342
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Växlade till en ny gren \"%s\"\n"
 
-#: builtin/checkout.c:922
+#: builtin/checkout.c:920
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Växlade till grenen \"%s\"\n"
 
-#: builtin/checkout.c:973
+#: builtin/checkout.c:971
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... och %d till.\n"
 
-#: builtin/checkout.c:979
+#: builtin/checkout.c:977
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11415,7 +11514,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:996
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11442,19 +11541,19 @@
 " git branch <nytt_grennamn> %s\n"
 "\n"
 
-#: builtin/checkout.c:1033
+#: builtin/checkout.c:1031
 msgid "internal error in revision walk"
 msgstr "internt fel vid genomgång av revisioner (revision walk)"
 
-#: builtin/checkout.c:1037
+#: builtin/checkout.c:1035
 msgid "Previous HEAD position was"
 msgstr "Tidigare position för HEAD var"
 
-#: builtin/checkout.c:1077 builtin/checkout.c:1339
+#: builtin/checkout.c:1075 builtin/checkout.c:1337
 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:1152
+#: builtin/checkout.c:1150
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11463,7 +11562,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:1159
+#: builtin/checkout.c:1157
 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"
@@ -11483,51 +11582,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:1169
+#: builtin/checkout.c:1167
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "\"%s\" motsvarar flera (%d) spårade fjärrgrenar"
 
-#: builtin/checkout.c:1235
+#: builtin/checkout.c:1233
 msgid "only one reference expected"
 msgstr "endast en referens förväntades"
 
-#: builtin/checkout.c:1252
+#: builtin/checkout.c:1250
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "endast en referens förväntades, %d gavs."
 
-#: builtin/checkout.c:1298 builtin/worktree.c:283 builtin/worktree.c:451
+#: builtin/checkout.c:1296 builtin/worktree.c:342 builtin/worktree.c:510
 #, c-format
 msgid "invalid reference: %s"
 msgstr "felaktig referens: %s"
 
-#: builtin/checkout.c:1311 builtin/checkout.c:1677
+#: builtin/checkout.c:1309 builtin/checkout.c:1675
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "referensen är inte ett träd: %s"
 
-#: builtin/checkout.c:1358
+#: builtin/checkout.c:1356
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "förväntade gren, fick taggen \"%s\""
 
-#: builtin/checkout.c:1360
+#: builtin/checkout.c:1358
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "förväntade gren, fick fjärrgrenen \"%s\""
 
-#: builtin/checkout.c:1361 builtin/checkout.c:1369
+#: builtin/checkout.c:1359 builtin/checkout.c:1367
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "förväntade gren, fick \"%s\""
 
-#: builtin/checkout.c:1364
+#: builtin/checkout.c:1362
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "förväntade gren, fick incheckningen \"%s\""
 
-#: builtin/checkout.c:1380
+#: builtin/checkout.c:1378
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11535,7 +11634,7 @@
 "kan inte växla gren vid sammanslagning\n"
 "Överväg \"git merge --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1384
+#: builtin/checkout.c:1382
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11543,7 +11642,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:1388
+#: builtin/checkout.c:1386
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11551,7 +11650,7 @@
 "kan inte växla gren vid ombasering\n"
 "Överväg \"git rebase --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1390
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11559,7 +11658,7 @@
 "kan inte växla gren i en \"cherry-pick\"\n"
 "Överväg \"git cherry-pick --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1394
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11567,146 +11666,146 @@
 "kan inte växla gren i en \"revert\"\n"
 "Överväg \"git revert --quit\" eller \"git worktree add\"."
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1398
 msgid "you are switching branch while bisecting"
 msgstr "då växlar grenar medan du gör en \"bisect\""
 
-#: builtin/checkout.c:1407
+#: builtin/checkout.c:1405
 msgid "paths cannot be used with switching branches"
 msgstr "sökvägar kan inte användas vid byte av gren"
 
-#: builtin/checkout.c:1410 builtin/checkout.c:1414 builtin/checkout.c:1418
+#: builtin/checkout.c:1408 builtin/checkout.c:1412 builtin/checkout.c:1416
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "\"%s\" kan inte användas vid byte av gren"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1425 builtin/checkout.c:1428
-#: builtin/checkout.c:1433 builtin/checkout.c:1438
+#: builtin/checkout.c:1420 builtin/checkout.c:1423 builtin/checkout.c:1426
+#: builtin/checkout.c:1431 builtin/checkout.c:1436
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "\"%s\" kan inte användas med \"%s\""
 
-#: builtin/checkout.c:1435
+#: builtin/checkout.c:1433
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "\"%s\" kan inte ta <startpunkt>"
 
-#: builtin/checkout.c:1443
+#: builtin/checkout.c:1441
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Kan inte växla gren till icke-incheckningen \"%s\""
 
-#: builtin/checkout.c:1450
+#: builtin/checkout.c:1448
 msgid "missing branch or commit argument"
 msgstr "saknar gren- eller incheckingsargument"
 
-#: builtin/checkout.c:1492 builtin/clone.c:91 builtin/commit-graph.c:80
-#: builtin/commit-graph.c:164 builtin/fetch.c:168 builtin/merge.c:288
+#: builtin/checkout.c:1490 builtin/clone.c:91 builtin/commit-graph.c:82
+#: builtin/commit-graph.c:189 builtin/fetch.c:168 builtin/merge.c:288
 #: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:561
 #: builtin/send-pack.c:173
 msgid "force progress reporting"
 msgstr "tvinga förloppsrapportering"
 
-#: builtin/checkout.c:1493
+#: builtin/checkout.c:1491
 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:1494 builtin/log.c:1709 parse-options.h:322
+#: builtin/checkout.c:1492 builtin/log.c:1709 parse-options.h:322
 msgid "style"
 msgstr "stil"
 
-#: builtin/checkout.c:1495
+#: builtin/checkout.c:1493
 msgid "conflict style (merge or diff3)"
 msgstr "konfliktstil (merge eller diff3)"
 
-#: builtin/checkout.c:1507 builtin/worktree.c:499
+#: builtin/checkout.c:1505 builtin/worktree.c:558
 msgid "detach HEAD at named commit"
 msgstr "koppla från HEAD vid namngiven incheckning"
 
-#: builtin/checkout.c:1508
+#: builtin/checkout.c:1506
 msgid "set upstream info for new branch"
 msgstr "sätt uppströmsinformation för ny gren"
 
-#: builtin/checkout.c:1510
+#: builtin/checkout.c:1508
 msgid "force checkout (throw away local modifications)"
 msgstr "tvinga utcheckning (kasta bort lokala ändringar)"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new-branch"
 msgstr "ny-gren"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new unparented branch"
 msgstr "ny gren utan förälder"
 
-#: builtin/checkout.c:1514 builtin/merge.c:292
+#: builtin/checkout.c:1512 builtin/merge.c:292
 msgid "update ignored files (default)"
 msgstr "uppdatera ignorerade filer (standard)"
 
-#: builtin/checkout.c:1517
+#: builtin/checkout.c:1515
 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:1530
+#: builtin/checkout.c:1528
 msgid "checkout our version for unmerged files"
 msgstr "checka ut vår version för ej sammanslagna filer"
 
-#: builtin/checkout.c:1533
+#: builtin/checkout.c:1531
 msgid "checkout their version for unmerged files"
 msgstr "checka ut deras version för ej sammanslagna filer"
 
-#: builtin/checkout.c:1537
+#: builtin/checkout.c:1535
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "begränsa inte sökvägar till endast glesa poster"
 
-#: builtin/checkout.c:1592
+#: builtin/checkout.c:1590
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c och --orphan är ömsesidigt uteslutande"
 
-#: builtin/checkout.c:1596
+#: builtin/checkout.c:1594
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p och --overlay är ömsesidigt uteslutande"
 
-#: builtin/checkout.c:1633
+#: builtin/checkout.c:1631
 msgid "--track needs a branch name"
 msgstr "--track behöver ett namn på en gren"
 
-#: builtin/checkout.c:1638
+#: builtin/checkout.c:1636
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "grennamn saknas; försök med -%c"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "could not resolve %s"
 msgstr "kunde inte upplösa %s"
 
-#: builtin/checkout.c:1686
+#: builtin/checkout.c:1684
 msgid "invalid path specification"
 msgstr "felaktig sökvägsangivelse"
 
-#: builtin/checkout.c:1693
+#: builtin/checkout.c:1691
 #, 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:1697
+#: builtin/checkout.c:1695
 #, 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:1706
+#: builtin/checkout.c:1704
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file är inkompatibelt med --detach"
 
-#: builtin/checkout.c:1709 builtin/reset.c:325 builtin/stash.c:1503
+#: builtin/checkout.c:1707 builtin/reset.c:325 builtin/stash.c:1503
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file är inkompatibelt med --patch"
 
-#: builtin/checkout.c:1720
+#: builtin/checkout.c:1718
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -11714,69 +11813,70 @@
 "git checkout: --ours/--theirs, --force och --merge är inkompatibla när\n"
 "du checkar ut från indexet."
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 msgid "you must specify path(s) to restore"
 msgstr "du måste ange katalog(er) att återställa"
 
-#: builtin/checkout.c:1751 builtin/checkout.c:1753 builtin/checkout.c:1802
-#: builtin/checkout.c:1804 builtin/clone.c:121 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/worktree.c:495 builtin/worktree.c:497
+#: builtin/checkout.c:1749 builtin/checkout.c:1751 builtin/checkout.c:1800
+#: builtin/checkout.c:1802 builtin/clone.c:121 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2295 builtin/worktree.c:554
+#: builtin/worktree.c:556
 msgid "branch"
 msgstr "gren"
 
-#: builtin/checkout.c:1752
+#: builtin/checkout.c:1750
 msgid "create and checkout a new branch"
 msgstr "skapa och checka ut en ny gren"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid "create/reset and checkout a branch"
 msgstr "skapa/nollställ och checka ut en gren"
 
-#: builtin/checkout.c:1755
+#: builtin/checkout.c:1753
 msgid "create reflog for new branch"
 msgstr "skapa reflogg för ny gren"
 
-#: builtin/checkout.c:1757
+#: builtin/checkout.c:1755
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "förutspå \"git checkout <gren-saknas>\" (förval)"
 
-#: builtin/checkout.c:1758
+#: builtin/checkout.c:1756
 msgid "use overlay mode (default)"
 msgstr "använd överläggsläge (standard)"
 
-#: builtin/checkout.c:1803
+#: builtin/checkout.c:1801
 msgid "create and switch to a new branch"
 msgstr "skapa och växla till en ny gren"
 
-#: builtin/checkout.c:1805
+#: builtin/checkout.c:1803
 msgid "create/reset and switch to a branch"
 msgstr "skapa/nollställ och växla till en gren"
 
-#: builtin/checkout.c:1807
+#: builtin/checkout.c:1805
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "förutspå \"git checkout <gren-saknas>\""
 
-#: builtin/checkout.c:1809
+#: builtin/checkout.c:1807
 msgid "throw away local modifications"
 msgstr "kasta bort lokala ändringar"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "which tree-ish to checkout from"
 msgstr "vilken träd-igt att checka ut från"
 
-#: builtin/checkout.c:1845
+#: builtin/checkout.c:1843
 msgid "restore the index"
 msgstr "återställ indexet"
 
-#: builtin/checkout.c:1847
+#: builtin/checkout.c:1845
 msgid "restore the working tree (default)"
 msgstr "återställ arbetskatalogen (förval)"
 
-#: builtin/checkout.c:1849
+#: builtin/checkout.c:1847
 msgid "ignore unmerged entries"
 msgstr "ignorera ej sammanslagna poster"
 
-#: builtin/checkout.c:1850
+#: builtin/checkout.c:1848
 msgid "use overlay mode"
 msgstr "använd överläggsläge"
 
@@ -11940,11 +12040,7 @@
 msgid "remove only ignored files"
 msgstr "ta endast bort ignorerade filer"
 
-#: builtin/clean.c:931
-msgid "-x and -X cannot be used together"
-msgstr "-x och -X kan inte användas samtidigt"
-
-#: builtin/clean.c:935
+#: builtin/clean.c:929
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -11952,7 +12048,7 @@
 "clean.requireForce satt till true, men varken -i, -n eller -f angavs; vägrar "
 "städa"
 
-#: builtin/clean.c:938
+#: builtin/clean.c:932
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -11960,6 +12056,10 @@
 "clean.requireForce har standardvärdet true och varken -i, -n eller -f "
 "angavs; vägrar städa"
 
+#: builtin/clean.c:944
+msgid "-x and -X cannot be used together"
+msgstr "-x och -X kan inte användas samtidigt"
+
 #: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<flaggor>] [--] <arkiv> [<kat>]"
@@ -11968,7 +12068,7 @@
 msgid "don't create a checkout"
 msgstr "skapa inte någon utcheckning"
 
-#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:536
+#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:554
 msgid "create a bare repository"
 msgstr "skapa ett naket (\"bare\") arkiv"
 
@@ -12000,11 +12100,11 @@
 msgid "number of submodules cloned in parallel"
 msgstr "antal undermoduler som klonas parallellt"
 
-#: builtin/clone.c:111 builtin/init-db.c:533
+#: builtin/clone.c:111 builtin/init-db.c:551
 msgid "template-directory"
 msgstr "mallkatalog"
 
-#: builtin/clone.c:112 builtin/init-db.c:534
+#: builtin/clone.c:112 builtin/init-db.c:552
 msgid "directory from which templates will be used"
 msgstr "katalog att använda mallar från"
 
@@ -12018,8 +12118,8 @@
 msgid "use --reference only while cloning"
 msgstr "använd --reference endast under kloningen"
 
-#: builtin/clone.c:119 builtin/column.c:27 builtin/merge-file.c:46
-#: builtin/pack-objects.c:3442 builtin/repack.c:329
+#: builtin/clone.c:119 builtin/column.c:27 builtin/init-db.c:562
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3514 builtin/repack.c:329
 msgid "name"
 msgstr "namn"
 
@@ -12044,7 +12144,7 @@
 msgid "create a shallow clone of that depth"
 msgstr "skapa en grund klon på detta djup"
 
-#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3431
+#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3503
 #: builtin/pull.c:211
 msgid "time"
 msgstr "tid"
@@ -12075,11 +12175,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "klonade undermoduler kommer vara grunda"
 
-#: builtin/clone.c:137 builtin/init-db.c:542
+#: builtin/clone.c:137 builtin/init-db.c:560
 msgid "gitdir"
 msgstr "gitkat"
 
-#: builtin/clone.c:138 builtin/init-db.c:543
+#: builtin/clone.c:138 builtin/init-db.c:561
 msgid "separate git dir from working tree"
 msgstr "separera gitkatalogen från arbetskatalogen"
 
@@ -12209,7 +12309,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "kunde inte ta bort temporär \"alternates\"-fil"
 
-#: builtin/clone.c:971 builtin/receive-pack.c:1972
+#: builtin/clone.c:971 builtin/receive-pack.c:1982
 msgid "Too many arguments."
 msgstr "För många argument."
 
@@ -12226,85 +12326,85 @@
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "flaggorna --bare och --separate-git-dir är inkompatibla."
 
-#: builtin/clone.c:1004
+#: builtin/clone.c:1007
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "arkivet \"%s\" finns inte"
 
-#: builtin/clone.c:1010 builtin/fetch.c:1789
+#: builtin/clone.c:1011 builtin/fetch.c:1794
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "djupet %s är inte ett positivt tal"
 
-#: builtin/clone.c:1020
+#: builtin/clone.c:1021
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "destinationssökvägen \"%s\" finns redan och är inte en tom katalog."
 
-#: builtin/clone.c:1030
+#: builtin/clone.c:1033
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "arbetsträdet \"%s\" finns redan."
 
-#: builtin/clone.c:1045 builtin/clone.c:1066 builtin/difftool.c:271
-#: builtin/log.c:1886 builtin/worktree.c:295 builtin/worktree.c:327
+#: builtin/clone.c:1048 builtin/clone.c:1069 builtin/difftool.c:271
+#: builtin/log.c:1886 builtin/worktree.c:354 builtin/worktree.c:386
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "kunde inte skapa inledande kataloger för \"%s\""
 
-#: builtin/clone.c:1050
+#: builtin/clone.c:1053
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "kunde inte skapa arbetskatalogen \"%s\""
 
-#: builtin/clone.c:1070
+#: builtin/clone.c:1073
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Klonar till ett naket arkiv \"%s\"...\n"
 
-#: builtin/clone.c:1072
+#: builtin/clone.c:1075
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Klonar till \"%s\"...\n"
 
-#: builtin/clone.c:1096
+#: builtin/clone.c:1099
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
 msgstr ""
 "clone --recursive är inte kompatibel med --reference och --reference-if-able"
 
-#: builtin/clone.c:1160
+#: builtin/clone.c:1164
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth ignoreras i lokala kloningar; använd file:// istället."
 
-#: builtin/clone.c:1162
+#: builtin/clone.c:1166
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "--shallow-since ignoreras i lokala kloningar; använd file:// istället."
 
-#: builtin/clone.c:1164
+#: builtin/clone.c:1168
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-exclude ignoreras i lokala kloningar; använd file:// istället."
 
-#: builtin/clone.c:1166
+#: builtin/clone.c:1170
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--filter ignoreras i lokala kloningar; använd file:// istället."
 
-#: builtin/clone.c:1169
+#: builtin/clone.c:1173
 msgid "source repository is shallow, ignoring --local"
 msgstr "källarkivet är grunt, ignorerar --local"
 
-#: builtin/clone.c:1174
+#: builtin/clone.c:1178
 msgid "--local is ignored"
 msgstr "--local ignoreras"
 
-#: builtin/clone.c:1249 builtin/clone.c:1257
+#: builtin/clone.c:1262 builtin/clone.c:1270
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Fjärrgrenen %s hittades inte i uppströmsarkivet %s"
 
-#: builtin/clone.c:1260
+#: builtin/clone.c:1273
 msgid "You appear to have cloned an empty repository."
 msgstr "Du verkar ha klonat ett tomt arkiv."
 
@@ -12340,13 +12440,13 @@
 msgid "--command must be the first argument"
 msgstr "--command måste vara första argument"
 
-#: builtin/commit-graph.c:11 builtin/commit-graph.c:19
+#: builtin/commit-graph.c:13 builtin/commit-graph.c:21
 msgid ""
 "git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
 msgstr ""
 "git commit-graph verify [--object-dir <objkat>] [--shallow] [--[no-]progress]"
 
-#: builtin/commit-graph.c:12 builtin/commit-graph.c:24
+#: builtin/commit-graph.c:14 builtin/commit-graph.c:26
 msgid ""
 "git commit-graph write [--object-dir <objdir>] [--append] [--"
 "split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
@@ -12356,80 +12456,89 @@
 "split[=<strategi>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
 "paths] [--[no-]progress] <delnings-flaggor>"
 
-#: builtin/commit-graph.c:60
+#: builtin/commit-graph.c:62
 #, c-format
 msgid "could not find object directory matching %s"
 msgstr "kunde inte hitta objektkatalog för %s"
 
-#: builtin/commit-graph.c:76 builtin/commit-graph.c:152
-#: builtin/commit-graph.c:257 builtin/fetch.c:180 builtin/log.c:1678
+#: builtin/commit-graph.c:78 builtin/commit-graph.c:177
+#: builtin/commit-graph.c:276 builtin/fetch.c:180 builtin/log.c:1678
 msgid "dir"
 msgstr "kat"
 
-#: builtin/commit-graph.c:77 builtin/commit-graph.c:153
-#: builtin/commit-graph.c:258
+#: builtin/commit-graph.c:79 builtin/commit-graph.c:178
+#: builtin/commit-graph.c:277
 msgid "The object directory to store the graph"
 msgstr "Objektkatalogen där grafen ska lagras"
 
-#: builtin/commit-graph.c:79
+#: builtin/commit-graph.c:81
 msgid "if the commit-graph is split, only verify the tip file"
 msgstr "om inchecknignsgrafen är delad, kontrollera bara spetsfilen"
 
-#: builtin/commit-graph.c:102
+#: builtin/commit-graph.c:104
 #, c-format
 msgid "Could not open commit-graph '%s'"
 msgstr "Kunde inte öppna incheckningsgrafen \"%s\""
 
-#: builtin/commit-graph.c:136
+#: builtin/commit-graph.c:138
 #, c-format
 msgid "unrecognized --split argument, %s"
 msgstr "okänt argument för --split, %s"
 
-#: builtin/commit-graph.c:155
+#: builtin/commit-graph.c:151
+#, c-format
+msgid "unexpected non-hex object ID: %s"
+msgstr "oväntat icke-hexadecimalt objekt-ID: %s"
+
+#: builtin/commit-graph.c:156
+#, c-format
+msgid "invalid object: %s"
+msgstr "ogiltigt objekt: %s"
+
+#: builtin/commit-graph.c:180
 msgid "start walk at all refs"
 msgstr "starta traversering vid alla referenser"
 
-#: builtin/commit-graph.c:157
+#: builtin/commit-graph.c:182
 msgid "scan pack-indexes listed by stdin for commits"
 msgstr "sök paketindex listade på standard in efter incheckningar"
 
-#: builtin/commit-graph.c:159
+#: builtin/commit-graph.c:184
 msgid "start walk at commits listed by stdin"
 msgstr "börja gå genom incheckningar listade på standard in"
 
-#: builtin/commit-graph.c:161
+#: builtin/commit-graph.c:186
 msgid "include all commits already in the commit-graph file"
 msgstr "ta med alla incheckningar redan i filen commit-graph"
 
-#: builtin/commit-graph.c:163
+#: builtin/commit-graph.c:188
 msgid "enable computation for changed paths"
 msgstr "aktivera beräkning av ändrade sökvägar"
 
-#: builtin/commit-graph.c:166
+#: builtin/commit-graph.c:191
 msgid "allow writing an incremental commit-graph file"
 msgstr "tillåt skriva en inkrementell incheckningsgraffil"
 
-#: builtin/commit-graph.c:170
+#: builtin/commit-graph.c:195
 msgid "maximum number of commits in a non-base split commit-graph"
 msgstr ""
 "maximalt antal incheckningar i en delad incheckingsgraf som inte är bad"
 
-#: builtin/commit-graph.c:172
+#: builtin/commit-graph.c:197
 msgid "maximum ratio between two levels of a split commit-graph"
 msgstr "maximalt förhållande mellan två nivåer av en delad incheckningsgraf"
 
-#: builtin/commit-graph.c:174
+#: builtin/commit-graph.c:199
 msgid "only expire files older than a given date-time"
 msgstr "låt tid endast gå ut för filer äldre än givet datum och tid"
 
-#: builtin/commit-graph.c:190
+#: builtin/commit-graph.c:215
 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"
 
-#: builtin/commit-graph.c:229
-#, c-format
-msgid "unexpected non-hex object ID: %s"
-msgstr "förväntade icke-hexadecimalt objekt-ID: %s"
+#: builtin/commit-graph.c:245
+msgid "Collecting commits from input"
+msgstr "Hämtar incheckningar från indata"
 
 #: builtin/commit-tree.c:18
 msgid ""
@@ -12832,7 +12941,7 @@
 msgstr "version"
 
 #: builtin/commit.c:1376 builtin/commit.c:1535 builtin/push.c:549
-#: builtin/worktree.c:646
+#: builtin/worktree.c:722
 msgid "machine-readable output"
 msgstr "maskinläsbar utdata"
 
@@ -12845,8 +12954,8 @@
 msgstr "terminera poster med NUL"
 
 #: builtin/commit.c:1384 builtin/commit.c:1388 builtin/commit.c:1543
-#: builtin/fast-export.c:1153 builtin/fast-export.c:1156
-#: builtin/fast-export.c:1159 builtin/rebase.c:1392 parse-options.h:336
+#: builtin/fast-export.c:1199 builtin/fast-export.c:1202
+#: builtin/fast-export.c:1205 builtin/rebase.c:1392 parse-options.h:336
 msgid "mode"
 msgstr "läge"
 
@@ -13531,35 +13640,45 @@
 msgid "--broken is incompatible with commit-ishes"
 msgstr "--broken är inkompatibelt med \"commit-ish\"-värden"
 
-#: builtin/diff.c:84
+#: builtin/diff.c:91
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "\"%s\": inte en normal fil eller symbolisk länk"
 
-#: builtin/diff.c:235
+#: builtin/diff.c:242
 #, c-format
 msgid "invalid option: %s"
 msgstr "ogiltig flagga: %s"
 
-#: builtin/diff.c:350
+#: builtin/diff.c:359
+#, c-format
+msgid "%s...%s: no merge base"
+msgstr "%s...%s: ingen sammanslagningsbas"
+
+#: builtin/diff.c:469
 msgid "Not a git repository"
 msgstr "Inte ett git-arkiv"
 
-#: builtin/diff.c:394
+#: builtin/diff.c:514
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "objektet \"%s\" som angavs är felaktigt."
 
-#: builtin/diff.c:403
+#: builtin/diff.c:525
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "mer än två blobbar angavs: \"%s\""
 
-#: builtin/diff.c:408
+#: builtin/diff.c:530
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "ej hanterat objekt \"%s\" angavs."
 
+#: builtin/diff.c:564
+#, c-format
+msgid "%s...%s: multiple merge bases, using %s"
+msgstr "%s...%s: flera sammanslagningsbaser, använder %s"
+
 #: builtin/difftool.c:30
 msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
 msgstr ""
@@ -13711,82 +13830,103 @@
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-flaggor]"
 
-#: builtin/fast-export.c:853
+#: builtin/fast-export.c:868
 msgid "Error: Cannot export nested tags unless --mark-tags is specified."
 msgstr "Fel: Kan inte exportera nästlade taggar såvida inte --mark-tags anges."
 
-#: builtin/fast-export.c:1152
+#: builtin/fast-export.c:1178
+msgid "--anonymize-map token cannot be empty"
+msgstr "symbolen för --anonymize-map kan inte vara tom"
+
+#: builtin/fast-export.c:1198
 msgid "show progress after <n> objects"
 msgstr "visa förlopp efter <n> objekt"
 
-#: builtin/fast-export.c:1154
+#: builtin/fast-export.c:1200
 msgid "select handling of signed tags"
 msgstr "välj hantering av signerade taggar"
 
-#: builtin/fast-export.c:1157
+#: builtin/fast-export.c:1203
 msgid "select handling of tags that tag filtered objects"
 msgstr "välj hantering av taggar som har taggfiltrerade objekt"
 
-#: builtin/fast-export.c:1160
+#: builtin/fast-export.c:1206
 msgid "select handling of commit messages in an alternate encoding"
 msgstr "välj hantering av incheckningsmeddelanden i alternativ teckenkodning"
 
-#: builtin/fast-export.c:1163
+#: builtin/fast-export.c:1209
 msgid "Dump marks to this file"
 msgstr "Dumpa märken till filen"
 
-#: builtin/fast-export.c:1165
+#: builtin/fast-export.c:1211
 msgid "Import marks from this file"
 msgstr "Importera märken från filen"
 
-#: builtin/fast-export.c:1169
+#: builtin/fast-export.c:1215
 msgid "Import marks from this file if it exists"
 msgstr "Importera märken från filen, om den finns"
 
-#: builtin/fast-export.c:1171
+#: builtin/fast-export.c:1217
 msgid "Fake a tagger when tags lack one"
 msgstr "Fejka taggare när taggen saknar en"
 
-#: builtin/fast-export.c:1173
+#: builtin/fast-export.c:1219
 msgid "Output full tree for each commit"
 msgstr "Skriv ut hela trädet för varje incheckning"
 
-#: builtin/fast-export.c:1175
+#: builtin/fast-export.c:1221
 msgid "Use the done feature to terminate the stream"
 msgstr "Använd done-funktionen för att avsluta strömmen"
 
-#: builtin/fast-export.c:1176
+#: builtin/fast-export.c:1222
 msgid "Skip output of blob data"
 msgstr "Hoppa över skrivning av blob-data"
 
-#: builtin/fast-export.c:1177 builtin/log.c:1724
+#: builtin/fast-export.c:1223 builtin/log.c:1724
 msgid "refspec"
 msgstr "referensspecifikation"
 
-#: builtin/fast-export.c:1178
+#: builtin/fast-export.c:1224
 msgid "Apply refspec to exported refs"
 msgstr "Applicera referensspecifikation på exporterade referenser"
 
-#: builtin/fast-export.c:1179
+#: builtin/fast-export.c:1225
 msgid "anonymize output"
 msgstr "anonymisera utdata"
 
-#: builtin/fast-export.c:1181
+#: builtin/fast-export.c:1226
+msgid "from:to"
+msgstr "från:till"
+
+#: builtin/fast-export.c:1227
+msgid "convert <from> to <to> in anonymized output"
+msgstr "konvertera <från> till <till> i anonymiserad utdata"
+
+#: builtin/fast-export.c:1230
 msgid "Reference parents which are not in fast-export stream by object id"
 msgstr "Referera föräldrar som inte finns i fast-export-ström med objekt-id"
 
-#: builtin/fast-export.c:1183
+#: builtin/fast-export.c:1232
 msgid "Show original object ids of blobs/commits"
 msgstr "Visa ursprungliga objekt-id för blobbar/incheckningar"
 
-#: builtin/fast-export.c:1185
+#: builtin/fast-export.c:1234
 msgid "Label tags with mark ids"
 msgstr "Märk taggar med märke-id"
 
-#: builtin/fast-export.c:1220
+#: builtin/fast-export.c:1257
+msgid "--anonymize-map without --anonymize does not make sense"
+msgstr "--anonymize-map utan --anonymize ger ingen mening"
+
+#: builtin/fast-export.c:1272
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
 msgstr "Kan inte ange både --import-marks och --import-marks-if-exists"
 
+#: builtin/fetch-pack.c:245
+#, c-format
+msgid "Lockfile created but not reported: %s"
+msgstr "Låsfil skapad men inte rapporterad: %s"
+
 #: builtin/fetch.c:35
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<flaggor>] [<arkiv> [<refspec>...]]"
@@ -14112,40 +14252,40 @@
 msgid "You need to specify a tag name."
 msgstr "Du måste ange namnet på en tagg."
 
-#: builtin/fetch.c:1773
+#: builtin/fetch.c:1778
 msgid "Negative depth in --deepen is not supported"
 msgstr "Negativa djup stöds inte i --deepen"
 
-#: builtin/fetch.c:1775
+#: builtin/fetch.c:1780
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen och --depth är ömsesidigt uteslutande"
 
-#: builtin/fetch.c:1780
+#: builtin/fetch.c:1785
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth och --unshallow kan inte användas samtidigt"
 
-#: builtin/fetch.c:1782
+#: builtin/fetch.c:1787
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow kan inte användas på ett komplett arkiv"
 
-#: builtin/fetch.c:1798
+#: builtin/fetch.c:1800
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all tar inte namnet på ett arkiv som argument"
 
-#: builtin/fetch.c:1800
+#: builtin/fetch.c:1802
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all kan inte anges med referensspecifikationer"
 
-#: builtin/fetch.c:1809
+#: builtin/fetch.c:1811
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Fjärren eller fjärrgruppen finns inte: %s"
 
-#: builtin/fetch.c:1816
+#: builtin/fetch.c:1818
 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:1834
+#: builtin/fetch.c:1836
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14604,8 +14744,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1730
-#: builtin/pack-objects.c:2855
+#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1727
+#: builtin/pack-objects.c:2904
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "trådstöd saknas, ignorerar %s"
@@ -14834,11 +14974,11 @@
 msgid "invalid option combination, ignoring --threads"
 msgstr "ogiltig kombination av flaggor, ignorerar --threads"
 
-#: builtin/grep.c:1084 builtin/pack-objects.c:3548
+#: builtin/grep.c:1084 builtin/pack-objects.c:3623
 msgid "no threads support, ignoring --threads"
 msgstr "trådstöd saknas, ignorerar --threads"
 
-#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2852
+#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2901
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "felaktigt antal trådar angivet (%d)"
@@ -15040,7 +15180,7 @@
 msgid "used more bytes than were available"
 msgstr "använde fler byte än tillgängligt"
 
-#: builtin/index-pack.c:288 builtin/pack-objects.c:607
+#: builtin/index-pack.c:288 builtin/pack-objects.c:618
 msgid "pack too large for current definition of off_t"
 msgstr "paket för stort för nuvarande definition av off_t"
 
@@ -15111,8 +15251,8 @@
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "SHA1-KOLLISION UPPTÄCKT VID %s !"
 
-#: builtin/index-pack.c:738 builtin/pack-objects.c:159
-#: builtin/pack-objects.c:219 builtin/pack-objects.c:314
+#: builtin/index-pack.c:738 builtin/pack-objects.c:170
+#: builtin/pack-objects.c:230 builtin/pack-objects.c:325
 #, c-format
 msgid "unable to read %s"
 msgstr "kunde inte läsa %s"
@@ -15173,7 +15313,7 @@
 msgid "Resolving deltas"
 msgstr "Analyserar delta"
 
-#: builtin/index-pack.c:1208 builtin/pack-objects.c:2616
+#: builtin/index-pack.c:1208 builtin/pack-objects.c:2665
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "kunde inte skapa tråd: %s"
@@ -15238,58 +15378,67 @@
 msgid "cannot store index file"
 msgstr "kan inte spara indexfil"
 
-#: builtin/index-pack.c:1528 builtin/pack-objects.c:2863
+#: builtin/index-pack.c:1528 builtin/pack-objects.c:2912
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "felaktig pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1596
+#: builtin/index-pack.c:1592
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Kan inte öppna befintlig paketfil \"%s\""
 
-#: builtin/index-pack.c:1598
+#: builtin/index-pack.c:1594
 #, 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:1646
+#: builtin/index-pack.c:1642
 #, 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:1653
+#: builtin/index-pack.c:1649
 #, 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:1692
+#: builtin/index-pack.c:1689
 msgid "Cannot come back to cwd"
 msgstr "Kan inte gå tillbaka till arbetskatalogen (cwd)"
 
-#: builtin/index-pack.c:1741 builtin/index-pack.c:1744
-#: builtin/index-pack.c:1760 builtin/index-pack.c:1764
+#: builtin/index-pack.c:1738 builtin/index-pack.c:1741
+#: builtin/index-pack.c:1757 builtin/index-pack.c:1761
 #, c-format
 msgid "bad %s"
 msgstr "felaktig %s"
 
-#: builtin/index-pack.c:1780
+#: builtin/index-pack.c:1767 builtin/init-db.c:392 builtin/init-db.c:621
+#, c-format
+msgid "unknown hash algorithm '%s'"
+msgstr "okänd hashningsalgoritm \"%s\""
+
+#: builtin/index-pack.c:1782
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin kan inte användas med --stdin"
 
-#: builtin/index-pack.c:1782
+#: builtin/index-pack.c:1784
 msgid "--stdin requires a git repository"
 msgstr "--stdin kräver ett git-arkiv"
 
-#: builtin/index-pack.c:1788
+#: builtin/index-pack.c:1786
+msgid "--object-format cannot be used with --stdin"
+msgstr "--object-format kan inte användas med --stdin"
+
+#: builtin/index-pack.c:1792
 msgid "--verify with no packfile name given"
 msgstr "--verify angavs utan paketfilnamn"
 
-#: builtin/index-pack.c:1836 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1840 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "fsck-fel i packat objekt"
 
@@ -15333,51 +15482,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "kopierade inte mallar från \"%s\": %s"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:276
+#, c-format
+msgid "invalid initial branch name: '%s'"
+msgstr "ogiltigt namn på första gren: \"%s\""
+
+#: builtin/init-db.c:368
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "kan inte hantera filtyp %d"
 
-#: builtin/init-db.c:359
+#: builtin/init-db.c:371
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "kan inte flytta %s till %s"
 
-#: builtin/init-db.c:374
+#: builtin/init-db.c:386
 msgid "attempt to reinitialize repository with different hash"
 msgstr "försöker initiera arkivet på nytt med annan hash"
 
-#: builtin/init-db.c:380 builtin/init-db.c:601
-#, c-format
-msgid "unknown hash algorithm '%s'"
-msgstr "okänd hashningsalgoritm \"%s\""
-
-#: builtin/init-db.c:397 builtin/init-db.c:400
+#: builtin/init-db.c:410 builtin/init-db.c:413
 #, c-format
 msgid "%s already exists"
 msgstr "%s finns redan"
 
-#: builtin/init-db.c:458
+#: builtin/init-db.c:444
+#, c-format
+msgid "re-init: ignored --initial-branch=%s"
+msgstr "re-init: ignorerade --initial-branch=%s"
+
+#: builtin/init-db.c:475
 #, 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:459
+#: builtin/init-db.c:476
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "Ominitierade befintligt Git-arkiv i %s%s\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:480
 #, 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:464
+#: builtin/init-db.c:481
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "Initierade tomt Git-arkiv i %s%s\n"
 
-#: builtin/init-db.c:513
+#: builtin/init-db.c:530
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -15385,33 +15539,37 @@
 "git init [-q | --quiet] [--bare] [--template=<mallkatalog>] [--"
 "shared[=<behörigheter>]] [<katalog>]"
 
-#: builtin/init-db.c:538
+#: builtin/init-db.c:556
 msgid "permissions"
 msgstr "behörigheter"
 
-#: builtin/init-db.c:539
+#: builtin/init-db.c:557
 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:544
+#: builtin/init-db.c:563
+msgid "override the name of the initial branch"
+msgstr "överstyr namnet på första gren"
+
+#: builtin/init-db.c:564
 msgid "hash"
 msgstr "hash"
 
-#: builtin/init-db.c:545
+#: builtin/init-db.c:565 builtin/show-index.c:22
 msgid "specify the hash algorithm to use"
 msgstr "ange hashningsalgoritm att använda"
 
-#: builtin/init-db.c:578 builtin/init-db.c:583
+#: builtin/init-db.c:598 builtin/init-db.c:603
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "kan inte skapa katalogen (mkdir) %s"
 
-#: builtin/init-db.c:587
+#: builtin/init-db.c:607
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "kan inte byta katalog (chdir) till %s"
 
-#: builtin/init-db.c:614
+#: builtin/init-db.c:634
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -15420,7 +15578,7 @@
 "%s (eller --work-tree=<katalog>) inte tillåtet utan att ange %s (eller --git-"
 "dir=<katalog>)"
 
-#: builtin/init-db.c:642
+#: builtin/init-db.c:662
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "Kan inte komma åt arbetskatalogen \"%s\""
@@ -17161,7 +17319,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:164
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
 msgid "do not remove, show only"
 msgstr "ta inte bort, bara visa"
 
@@ -17194,102 +17352,118 @@
 msgstr ""
 "git pack-objects [<flaggor>...] <basnamn> [< <reflista> | < <objektlista>]"
 
-#: builtin/pack-objects.c:431
+#: builtin/pack-objects.c:442
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "felaktig CRC för packat objekt %s"
 
-#: builtin/pack-objects.c:442
+#: builtin/pack-objects.c:453
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "trasigt packat objekt för %s"
 
-#: builtin/pack-objects.c:573
+#: builtin/pack-objects.c:584
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "rekursivt delta upptäcktes för objektet %s"
 
-#: builtin/pack-objects.c:784
+#: builtin/pack-objects.c:795
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "ordnade %u objekt, förväntade %<PRIu32>"
 
-#: builtin/pack-objects.c:973
+#: builtin/pack-objects.c:1003
 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:986
+#: builtin/pack-objects.c:1016
 msgid "Writing objects"
 msgstr "Skriver objekt"
 
-#: builtin/pack-objects.c:1047 builtin/update-index.c:90
+#: builtin/pack-objects.c:1077 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "misslyckades ta status på %s"
 
-#: builtin/pack-objects.c:1100
+#: builtin/pack-objects.c:1130
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "skrev %<PRIu32> objekt medan %<PRIu32> förväntades"
 
-#: builtin/pack-objects.c:1298
+#: builtin/pack-objects.c:1347
 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:1725
+#: builtin/pack-objects.c:1774
 #, 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:1734
+#: builtin/pack-objects.c:1783
 #, 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:2005
+#: builtin/pack-objects.c:2054
 msgid "Counting objects"
 msgstr "Räknar objekt"
 
-#: builtin/pack-objects.c:2150
+#: builtin/pack-objects.c:2199
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "kunde inte tolka objekthuvud för %s"
 
-#: builtin/pack-objects.c:2220 builtin/pack-objects.c:2236
-#: builtin/pack-objects.c:2246
+#: builtin/pack-objects.c:2269 builtin/pack-objects.c:2285
+#: builtin/pack-objects.c:2295
 #, c-format
 msgid "object %s cannot be read"
 msgstr "objektet %s kunde inte läsas"
 
-#: builtin/pack-objects.c:2223 builtin/pack-objects.c:2250
+#: builtin/pack-objects.c:2272 builtin/pack-objects.c:2299
 #, 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:2260
+#: builtin/pack-objects.c:2309
 msgid "suboptimal pack - out of memory"
 msgstr "icke-optimalt pack - minnet slut"
 
-#: builtin/pack-objects.c:2575
+#: builtin/pack-objects.c:2624
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "Deltakomprimering använder upp till %d trådar"
 
-#: builtin/pack-objects.c:2714
+#: builtin/pack-objects.c:2763
 #, 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:2802
+#: builtin/pack-objects.c:2851
 msgid "Compressing objects"
 msgstr "Komprimerar objekt"
 
-#: builtin/pack-objects.c:2808
+#: builtin/pack-objects.c:2857
 msgid "inconsistency with delta count"
 msgstr "deltaräknaren är inkonsekvent"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2929
+#, c-format
+msgid ""
+"value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
+"hash> <uri>' (got '%s')"
+msgstr ""
+"värdet på uploadpack.blobpackfileuri måste vara på formen '<objekt-hash> "
+"<paket-hash> <uri>' (fick '%s')"
+
+#: builtin/pack-objects.c:2932
+#, 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:2961
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -17298,7 +17472,7 @@
 "förväntade kant-objekt-id, fick skräp:\n"
 " %s"
 
-#: builtin/pack-objects.c:2895
+#: builtin/pack-objects.c:2967
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -17307,227 +17481,236 @@
 "förväntade objekt-id, fick skräp:\n"
 " %s"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3065
 msgid "invalid value for --missing"
 msgstr "ogiltigt värde för --missing"
 
-#: builtin/pack-objects.c:3052 builtin/pack-objects.c:3160
+#: builtin/pack-objects.c:3124 builtin/pack-objects.c:3232
 msgid "cannot open pack index"
 msgstr "kan inte öppna paketfilen"
 
-#: builtin/pack-objects.c:3083
+#: builtin/pack-objects.c:3155
 #, 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:3168
+#: builtin/pack-objects.c:3240
 msgid "unable to force loose object"
 msgstr "kan inte tvinga lösa objekt"
 
-#: builtin/pack-objects.c:3261
+#: builtin/pack-objects.c:3333
 #, c-format
 msgid "not a rev '%s'"
 msgstr "inte en referens \"%s\""
 
-#: builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3336
 #, c-format
 msgid "bad revision '%s'"
 msgstr "felaktig revision \"%s\""
 
-#: builtin/pack-objects.c:3289
+#: builtin/pack-objects.c:3361
 msgid "unable to add recent objects"
 msgstr "kan inte lägga till nya objekt"
 
-#: builtin/pack-objects.c:3342
+#: builtin/pack-objects.c:3414
 #, c-format
 msgid "unsupported index version %s"
 msgstr "indexversionen %s stöds ej"
 
-#: builtin/pack-objects.c:3346
+#: builtin/pack-objects.c:3418
 #, c-format
 msgid "bad index version '%s'"
 msgstr "felaktig indexversion \"%s\""
 
-#: builtin/pack-objects.c:3384
+#: builtin/pack-objects.c:3456
 msgid "<version>[,<offset>]"
 msgstr "<version>[,<offset>]"
 
-#: builtin/pack-objects.c:3385
+#: builtin/pack-objects.c:3457
 msgid "write the pack index file in the specified idx format version"
 msgstr "skriv paketindexfilen i angiven indexformatversion"
 
-#: builtin/pack-objects.c:3388
+#: builtin/pack-objects.c:3460
 msgid "maximum size of each output pack file"
 msgstr "maximal storlek på varje utdatapaketfil"
 
-#: builtin/pack-objects.c:3390
+#: builtin/pack-objects.c:3462
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignorera lånade objekt från supplerande objektlager"
 
-#: builtin/pack-objects.c:3392
+#: builtin/pack-objects.c:3464
 msgid "ignore packed objects"
 msgstr "ignorera packade objekt"
 
-#: builtin/pack-objects.c:3394
+#: builtin/pack-objects.c:3466
 msgid "limit pack window by objects"
 msgstr "begränsa paketfönster efter objekt"
 
-#: builtin/pack-objects.c:3396
+#: builtin/pack-objects.c:3468
 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:3398
+#: builtin/pack-objects.c:3470
 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:3400
+#: builtin/pack-objects.c:3472
 msgid "reuse existing deltas"
 msgstr "återanvänd befintliga delta"
 
-#: builtin/pack-objects.c:3402
+#: builtin/pack-objects.c:3474
 msgid "reuse existing objects"
 msgstr "återanvänd befintliga objekt"
 
-#: builtin/pack-objects.c:3404
+#: builtin/pack-objects.c:3476
 msgid "use OFS_DELTA objects"
 msgstr "använd OFS_DELTA-objekt"
 
-#: builtin/pack-objects.c:3406
+#: builtin/pack-objects.c:3478
 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:3408
+#: builtin/pack-objects.c:3480
 msgid "do not create an empty pack output"
 msgstr "försök inte skapa tom paketutdata"
 
-#: builtin/pack-objects.c:3410
+#: builtin/pack-objects.c:3482
 msgid "read revision arguments from standard input"
 msgstr "läs revisionsargument från standard in"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3484
 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:3415
+#: builtin/pack-objects.c:3487
 msgid "include objects reachable from any reference"
 msgstr "inkludera objekt som kan nås från någon referens"
 
-#: builtin/pack-objects.c:3418
+#: builtin/pack-objects.c:3490
 msgid "include objects referred by reflog entries"
 msgstr "inkludera objekt som refereras från referensloggposter"
 
-#: builtin/pack-objects.c:3421
+#: builtin/pack-objects.c:3493
 msgid "include objects referred to by the index"
 msgstr "inkludera objekt som refereras från indexet"
 
-#: builtin/pack-objects.c:3424
+#: builtin/pack-objects.c:3496
 msgid "output pack to stdout"
 msgstr "skriv paket på standard ut"
 
-#: builtin/pack-objects.c:3426
+#: builtin/pack-objects.c:3498
 msgid "include tag objects that refer to objects to be packed"
 msgstr "inkludera taggobjekt som refererar objekt som ska packas"
 
-#: builtin/pack-objects.c:3428
+#: builtin/pack-objects.c:3500
 msgid "keep unreachable objects"
 msgstr "behåll onåbara objekt"
 
-#: builtin/pack-objects.c:3430
+#: builtin/pack-objects.c:3502
 msgid "pack loose unreachable objects"
 msgstr "packa lösa onåbara objekt"
 
-#: builtin/pack-objects.c:3432
+#: builtin/pack-objects.c:3504
 msgid "unpack unreachable objects newer than <time>"
 msgstr "packa upp onåbara objekt nyare än <tid>"
 
-#: builtin/pack-objects.c:3435
+#: builtin/pack-objects.c:3507
 msgid "use the sparse reachability algorithm"
 msgstr "använd gles-nåbarhetsalgoritmen"
 
-#: builtin/pack-objects.c:3437
+#: builtin/pack-objects.c:3509
 msgid "create thin packs"
 msgstr "skapa tunna paket"
 
-#: builtin/pack-objects.c:3439
+#: builtin/pack-objects.c:3511
 msgid "create packs suitable for shallow fetches"
 msgstr "skapa packfiler lämpade för grunda hämtningar"
 
-#: builtin/pack-objects.c:3441
+#: builtin/pack-objects.c:3513
 msgid "ignore packs that have companion .keep file"
 msgstr "ignorera paket som har tillhörande .keep-fil"
 
-#: builtin/pack-objects.c:3443
+#: builtin/pack-objects.c:3515
 msgid "ignore this pack"
 msgstr "ignorera detta paket"
 
-#: builtin/pack-objects.c:3445
+#: builtin/pack-objects.c:3517
 msgid "pack compression level"
 msgstr "komprimeringsgrad för paket"
 
-#: builtin/pack-objects.c:3447
+#: builtin/pack-objects.c:3519
 msgid "do not hide commits by grafts"
 msgstr "göm inte incheckningar med ympningar (\"grafts\")"
 
-#: builtin/pack-objects.c:3449
+#: builtin/pack-objects.c:3521
 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:3451
+#: builtin/pack-objects.c:3523
 msgid "write a bitmap index together with the pack index"
 msgstr "använd bitkartindex tillsammans med packindexet"
 
-#: builtin/pack-objects.c:3455
+#: builtin/pack-objects.c:3527
 msgid "write a bitmap index if possible"
 msgstr "skriv bitkartindex om möjligt"
 
-#: builtin/pack-objects.c:3459
+#: builtin/pack-objects.c:3531
 msgid "handling for missing objects"
 msgstr "hantering av saknade objekt"
 
-#: builtin/pack-objects.c:3462
+#: builtin/pack-objects.c:3534
 msgid "do not pack objects in promisor packfiles"
 msgstr "packa inte objekt i kontraktspackfiler"
 
-#: builtin/pack-objects.c:3464
+#: builtin/pack-objects.c:3536
 msgid "respect islands during delta compression"
 msgstr "respektera öar under deltakomprimering"
 
-#: builtin/pack-objects.c:3493
+#: builtin/pack-objects.c:3538
+msgid "protocol"
+msgstr "protokoll"
+
+#: builtin/pack-objects.c:3539
+msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
+msgstr ""
+"uteslut redan konfigurerade uploadpack.blobpackfileuri med detta protokoll"
+
+#: builtin/pack-objects.c:3568
 #, 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:3498
+#: builtin/pack-objects.c:3573
 #, 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:3552
+#: builtin/pack-objects.c:3627
 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:3554
+#: builtin/pack-objects.c:3629
 msgid "minimum pack size limit is 1 MiB"
 msgstr "minsta packstorlek är 1 MiB"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3634
 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:3562
+#: builtin/pack-objects.c:3637
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable och -unpack-unreachable kan inte användas samtidigt"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3643
 msgid "cannot use --filter without --stdout"
 msgstr "kan inte använda --filter utan --stdout"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3703
 msgid "Enumerating objects"
 msgstr "Räknar upp objekt"
 
-#: builtin/pack-objects.c:3658
+#: builtin/pack-objects.c:3734
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18817,7 +19000,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <git-katalog>"
 
-#: builtin/receive-pack.c:843
+#: builtin/receive-pack.c:844
 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"
@@ -18847,7 +19030,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:863
+#: builtin/receive-pack.c:864
 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"
@@ -18868,11 +19051,11 @@
 "\n"
 "För att undvika detta meddelande kan du sätta det till \"refuse\"."
 
-#: builtin/receive-pack.c:1960
+#: builtin/receive-pack.c:1970
 msgid "quiet"
 msgstr "tyst"
 
-#: builtin/receive-pack.c:1974
+#: builtin/receive-pack.c:1984
 msgid "You must specify a directory."
 msgstr "Du måste ange en katalog."
 
@@ -20420,6 +20603,14 @@
 msgid "cannot find commit %s (%s)"
 msgstr "hittar inte incheckning %s (%s)"
 
+#: builtin/show-index.c:21
+msgid "hash-algorithm"
+msgstr "hashningsalgoritm"
+
+#: builtin/show-index.c:31
+msgid "Unknown hash algorithm"
+msgstr "okänd hashningsalgoritm"
+
 #: builtin/show-ref.c:12
 msgid ""
 "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
@@ -20473,50 +20664,54 @@
 msgstr ""
 "arbetskatalogen är inte glest (sparse-checkout-filen kanske inte finns)"
 
-#: builtin/sparse-checkout.c:212
+#: builtin/sparse-checkout.c:216
 msgid "failed to create directory for sparse-checkout file"
 msgstr "misslyckades skapa katalog för \"sparse-checkout\"-filen"
 
-#: builtin/sparse-checkout.c:253
+#: builtin/sparse-checkout.c:257
+msgid "unable to upgrade repository format to enable worktreeConfig"
+msgstr "kunde inte uppgradera arkivformat för att aktivera worktreeConfig"
+
+#: builtin/sparse-checkout.c:259
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "misslyckades ändra inställningen extensions.worktreeConfig"
 
-#: builtin/sparse-checkout.c:270
+#: builtin/sparse-checkout.c:276
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:289
+#: builtin/sparse-checkout.c:295
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "initiera sparse-checkout i konläge"
 
-#: builtin/sparse-checkout.c:326
+#: builtin/sparse-checkout.c:332
 #, c-format
 msgid "failed to open '%s'"
 msgstr "misslyckades öppna \"%s\""
 
-#: builtin/sparse-checkout.c:383
+#: builtin/sparse-checkout.c:389
 #, c-format
 msgid "could not normalize path %s"
 msgstr "kunde inte normalisera sökvägen \"%s\""
 
-#: builtin/sparse-checkout.c:395
+#: builtin/sparse-checkout.c:401
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <mönster>)"
 
-#: builtin/sparse-checkout.c:420
+#: builtin/sparse-checkout.c:426
 #, 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:474 builtin/sparse-checkout.c:498
+#: builtin/sparse-checkout.c:480 builtin/sparse-checkout.c:504
 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:543
+#: builtin/sparse-checkout.c:549
 msgid "read patterns from standard in"
 msgstr "läs mönster från standard in"
 
-#: builtin/sparse-checkout.c:580
+#: builtin/sparse-checkout.c:586
 msgid "error while refreshing working directory"
 msgstr "fel vid uppdatering av arbetskatalog"
 
@@ -21214,12 +21409,38 @@
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <sökväg> <nyurl>"
 
-#: builtin/submodule--helper.c:2323 git.c:436 git.c:683
+#: builtin/submodule--helper.c:2294
+msgid "set the default tracking branch to master"
+msgstr "välj master som förvald spårad gren"
+
+#: builtin/submodule--helper.c:2296
+msgid "set the default tracking branch"
+msgstr "välj förvald spårad gren"
+
+#: builtin/submodule--helper.c:2300
+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:2301
+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>"
+
+#: builtin/submodule--helper.c:2308
+msgid "--branch or --default required"
+msgstr "--branch eller --default krävs"
+
+#: builtin/submodule--helper.c:2311
+msgid "--branch and --default are mutually exclusive"
+msgstr "--branch och --default är ömsesidigt uteslutande"
+
+#: builtin/submodule--helper.c:2367 git.c:436 git.c:683
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s stöder inte --super-prefix"
 
-#: builtin/submodule--helper.c:2329
+#: builtin/submodule--helper.c:2373
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "\"%s\" är inte ett giltigt underkommando till submodule--helper"
@@ -21849,198 +22070,190 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <sökväg>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:894
+#: builtin/worktree.c:60 builtin/worktree.c:972
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "misslyckades ta bort \"%s\""
 
-#: builtin/worktree.c:79
-#, c-format
-msgid "Removing worktrees/%s: not a valid directory"
-msgstr "Tar bort worktrees/%s: inte en giltig katalog"
-
 #: builtin/worktree.c:85
-#, c-format
-msgid "Removing worktrees/%s: gitdir file does not exist"
-msgstr "Tar bort worktrees/%s: gitdir-filen existerar inte"
+msgid "not a valid directory"
+msgstr "inte i en giltig katalog"
 
-#: builtin/worktree.c:90 builtin/worktree.c:99
-#, c-format
-msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
-msgstr "Tar bort worktrees/%s: kan inte läsa gitdir-filen (%s)"
+#: builtin/worktree.c:91
+msgid "gitdir file does not exist"
+msgstr "gitdir-filen existerar inte"
 
-#: builtin/worktree.c:109
+#: builtin/worktree.c:96 builtin/worktree.c:105
 #, c-format
-msgid ""
-"Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
-"%<PRIuMAX>)"
-msgstr ""
-"Tar bort worktrees/%s: kort läsning (förväntade %<PRIuMAX> byte, läste "
-"%<PRIuMAX>)"
+msgid "unable to read gitdir file (%s)"
+msgstr "kunde inte läsa gitdir-filen (%s)"
 
-#: builtin/worktree.c:117
+#: builtin/worktree.c:115
 #, c-format
-msgid "Removing worktrees/%s: invalid gitdir file"
-msgstr "Tar bort worktrees/%s: felaktig gitdir-fil"
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "kort läsning (förväntade %<PRIuMAX> byte, läste %<PRIuMAX>)"
 
-#: builtin/worktree.c:126
+#: builtin/worktree.c:123
+msgid "invalid gitdir file"
+msgstr "ogiltig gitdir-fil"
+
+#: builtin/worktree.c:131
+msgid "gitdir file points to non-existent location"
+msgstr "gitdir-filen pekar på en ickeexisterande plats"
+
+#: builtin/worktree.c:146
 #, c-format
-msgid "Removing worktrees/%s: gitdir file points to non-existent location"
-msgstr "Tar bort worktrees/%s: gitdir-filen pekar på en ickeexisterande plats"
+msgid "Removing %s/%s: %s"
+msgstr "Tar bort %s/%s: %s"
 
-#: builtin/worktree.c:165
+#: builtin/worktree.c:221
 msgid "report pruned working trees"
 msgstr "rapportera borttagna arbetskataloger"
 
-#: builtin/worktree.c:167
+#: builtin/worktree.c:223
 msgid "expire working trees older than <time>"
 msgstr "låt tid gå ut för arbetskataloger äldre än <tid>"
 
-#: builtin/worktree.c:234
+#: builtin/worktree.c:293
 #, c-format
 msgid "'%s' already exists"
 msgstr "\"%s\" finns redan"
 
-#: builtin/worktree.c:244
+#: builtin/worktree.c:302
 #, c-format
-msgid "unable to re-add worktree '%s'"
-msgstr "kunde inte lägga in arbetskatalogen \"%s\" igen"
+msgid "unusable worktree destination '%s'"
+msgstr "oanvändbar mål för arbetskatalog \"%s\""
 
-#: builtin/worktree.c:249
+#: builtin/worktree.c:307
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
-"use 'add -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
+"use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
 "\"%s\" är en saknad men låst arbetskatalog;\n"
-"använd \"add -f -f\" för att överstyra, eller \"unlock\" och \"prune\" eller "
+"använd \"%s -f -f\" för att överstyra, eller \"unlock\" och \"prune\" eller "
 "\"remove\" för att rensa"
 
-#: builtin/worktree.c:251
+#: builtin/worktree.c:309
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
-"use 'add -f' to override, or 'prune' or 'remove' to clear"
+"use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
 "\"%s\" är en saknad men redan registrerad arbetskatalog;\n"
-"använd \"add -f\" för att överstyra, eller \"prune\" eller \"remove\" för "
-"att rensa"
+"använd \"%s -f\" för att överstyra, eller \"prune\" eller \"remove\" för att "
+"rensa"
 
-#: builtin/worktree.c:301
+#: builtin/worktree.c:360
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "kunde inte skapa katalogen \"%s\""
 
-#: builtin/worktree.c:435 builtin/worktree.c:441
+#: builtin/worktree.c:494 builtin/worktree.c:500
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Förbereder arbetskatalog (ny gren \"%s\")"
 
-#: builtin/worktree.c:437
+#: builtin/worktree.c:496
 #, 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:446
+#: builtin/worktree.c:505
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Förbereder arbetskatalog (checkar ut \"%s\")"
 
-#: builtin/worktree.c:452
+#: builtin/worktree.c:511
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Förbereder arbetskatalog (frånkopplat HEAD %s)"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:552
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr ""
 "checka ut <gren> även om den redan är utcheckad i en annan arbetskatalog"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:555
 msgid "create a new branch"
 msgstr "skapa en ny gren"
 
-#: builtin/worktree.c:498
+#: builtin/worktree.c:557
 msgid "create or reset a branch"
 msgstr "skapa eller återställ en gren"
 
-#: builtin/worktree.c:500
+#: builtin/worktree.c:559
 msgid "populate the new working tree"
 msgstr "befolka den nya arbetskatalogen"
 
-#: builtin/worktree.c:501
+#: builtin/worktree.c:560
 msgid "keep the new working tree locked"
 msgstr "låt arbetskatalogen förbli låst"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:563
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "ställ in spårningsläge (se git-branch(1))"
 
-#: builtin/worktree.c:507
+#: builtin/worktree.c:566
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "försök matcha namn på ny gren mot en fjärrspårande gren"
 
-#: builtin/worktree.c:515
+#: builtin/worktree.c:574
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B och --detach är ömsesidigt uteslutande"
 
-#: builtin/worktree.c:576
+#: builtin/worktree.c:635
 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:676
+#: builtin/worktree.c:755
 msgid "reason for locking"
 msgstr "orsak till lås"
 
-#: builtin/worktree.c:688 builtin/worktree.c:721 builtin/worktree.c:795
-#: builtin/worktree.c:922
+#: builtin/worktree.c:767 builtin/worktree.c:800 builtin/worktree.c:874
+#: builtin/worktree.c:1000
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "\"%s\" är inte en arbetskatalog"
 
-#: builtin/worktree.c:690 builtin/worktree.c:723
+#: builtin/worktree.c:769 builtin/worktree.c:802
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Huvudarbetskatalogen kan inte låsas eller låsas upp"
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:774
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "\"%s\" är redan låst, orsak: %s"
 
-#: builtin/worktree.c:697
+#: builtin/worktree.c:776
 #, c-format
 msgid "'%s' is already locked"
 msgstr "\"%s\" är redan låst"
 
-#: builtin/worktree.c:725
+#: builtin/worktree.c:804
 #, c-format
 msgid "'%s' is not locked"
 msgstr "\"%s\" är inte låst"
 
-#: builtin/worktree.c:766
+#: builtin/worktree.c:845
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "arbetskataloger med undermoduler kan inte flyttas eller tas bort"
 
-#: builtin/worktree.c:774
+#: builtin/worktree.c:853
 msgid "force move even if worktree is dirty or locked"
 msgstr "tvinga flyttning även om arbetskatalogen är smutsig eller låst"
 
-#: builtin/worktree.c:797 builtin/worktree.c:924
+#: builtin/worktree.c:876 builtin/worktree.c:1002
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "\"%s\" är inte en huvudarbetskatalog"
 
-#: builtin/worktree.c:802
+#: builtin/worktree.c:881
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "kunde inte lista ut målnamn från \"%s\""
 
-#: builtin/worktree.c:808
-#, c-format
-msgid "target '%s' already exists"
-msgstr "målet \"%s\" finns redan"
-
-#: builtin/worktree.c:816
+#: builtin/worktree.c:894
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -22049,7 +22262,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:818
+#: builtin/worktree.c:896
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -22057,38 +22270,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:821
+#: builtin/worktree.c:899
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "kontroll misslyckades, kan inte flytta arbetskatalog: %s"
 
-#: builtin/worktree.c:826
+#: builtin/worktree.c:904
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "misslyckades flytta \"%s\" till \"%s\""
 
-#: builtin/worktree.c:874
+#: builtin/worktree.c:952
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "misslyckades köra \"git status\" på \"%s\""
 
-#: builtin/worktree.c:878
+#: builtin/worktree.c:956
 #, 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:883
+#: builtin/worktree.c:961
 #, 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:906
+#: builtin/worktree.c:984
 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:929
+#: builtin/worktree.c:1007
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -22097,7 +22310,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:931
+#: builtin/worktree.c:1009
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -22105,7 +22318,7 @@
 "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:934
+#: builtin/worktree.c:1012
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "kontroll misslyckades, kan inte ta bort arbetskatalog: %s"
@@ -22126,32 +22339,32 @@
 msgid "only useful for debugging"
 msgstr "endast användbart vid felsökning"
 
-#: bugreport.c:14
+#: bugreport.c:15
 msgid "git version:\n"
 msgstr "git version:\n"
 
-#: bugreport.c:20
+#: bugreport.c:21
 #, c-format
 msgid "uname() failed with error '%s' (%d)\n"
 msgstr "uname() misslyckades med felet \"%s\" (%d)\n"
 
-#: bugreport.c:30
+#: bugreport.c:31
 msgid "compiler info: "
 msgstr "kompilatorinfo:"
 
-#: bugreport.c:32
+#: bugreport.c:34
 msgid "libc info: "
 msgstr "libc-info:"
 
-#: bugreport.c:74
+#: bugreport.c:80
 msgid "not run from a git repository - no hooks to show\n"
 msgstr "körs inte från ett git-arkiv - inga krokar att visa\n"
 
-#: bugreport.c:84
+#: bugreport.c:90
 msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
 msgstr "git bugreport [-o|--output-directory <fil>] [-s|--suffix <format>]"
 
-#: bugreport.c:91
+#: bugreport.c:97
 msgid ""
 "Thank you for filling out a Git bug report!\n"
 "Please answer the following questions to help us understand your issue.\n"
@@ -22187,66 +22400,77 @@
 "Se över resten av felrapporten nedan.\n"
 "Du kan ta bort rader du inte vill dela.\n"
 
-#: bugreport.c:130
+#: bugreport.c:136
 msgid "specify a destination for the bugreport file"
 msgstr "ange mål för buggrapporteringsfilen"
 
-#: bugreport.c:132
+#: bugreport.c:138
 msgid "specify a strftime format suffix for the filename"
 msgstr "ange ett filändelse i strftime-format"
 
-#: bugreport.c:156
+#: bugreport.c:162
 #, c-format
 msgid "could not create leading directories for '%s'"
 msgstr "kunde inte skapa inledande kataloger för \"%s\""
 
-#: bugreport.c:163
+#: bugreport.c:169
 msgid "System Info"
 msgstr "Systeminfo"
 
-#: bugreport.c:166
+#: bugreport.c:172
 msgid "Enabled Hooks"
 msgstr "Aktiverade krokar"
 
-#: bugreport.c:174
+#: bugreport.c:180
 #, c-format
 msgid "couldn't create a new file at '%s'"
 msgstr "kunde inte skapa filen på \"%s\""
 
-#: bugreport.c:186
+#: bugreport.c:184
+#, c-format
+msgid "unable to write to %s"
+msgstr "kunde inte skriva till %s"
+
+#: bugreport.c:194
 #, c-format
 msgid "Created new report at '%s'.\n"
 msgstr "Skapade ny rapport på \"%s\"\n"
 
-#: fast-import.c:3085
+#: fast-import.c:3100
 #, c-format
 msgid "Missing from marks for submodule '%s'"
 msgstr "Saknar från-märken för undermodulen \"%s\""
 
-#: fast-import.c:3087
+#: fast-import.c:3102
 #, c-format
 msgid "Missing to marks for submodule '%s'"
 msgstr "Saknar till-märken för undermodulen \"%s\""
 
-#: fast-import.c:3222
+#: fast-import.c:3237
 #, c-format
 msgid "Expected 'mark' command, got %s"
 msgstr "Förväntade \"mark\"-kommando, fick %s"
 
-#: fast-import.c:3227
+#: fast-import.c:3242
 #, c-format
 msgid "Expected 'to' command, got %s"
 msgstr "Förväntade \"to\"-kommando, fick %s"
 
-#: fast-import.c:3317
+#: fast-import.c:3334
 msgid "Expected format name:filename for submodule rewrite option"
 msgstr "Förvändae formatet namn:filnamn för undermodul-omskrivningsflaggan"
 
-#: fast-import.c:3371
+#: fast-import.c:3388
 #, c-format
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "funktionen \"%s\" förbjuden i indata utan --allow-unsafe-features"
 
+#: http-fetch.c:111
+#, c-format
+msgid "argument to --packfile must be a valid hash (got '%s')"
+msgstr ""
+"argumentet till --packfile måste vara ett giltigt hashvärde (fick '%s')"
+
 #: credential-cache--daemon.c:223
 #, c-format
 msgid ""
@@ -22424,30 +22648,30 @@
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr "Fastnålning av öppen nyckel stöds inte av cURL < 7.44.0"
 
-#: http.c:914
+#: http.c:910
 msgid "CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0"
 msgstr "CURLSSLOPT_NO_REVOKE stöds inte av cURL < 7.44.0"
 
-#: http.c:993
+#: http.c:989
 msgid "Protocol restrictions not supported with cURL < 7.19.4"
 msgstr "Prtokollbegränsningar stöds inte av cURL < 7.19.4"
 
-#: http.c:1139
+#: http.c:1132
 #, c-format
 msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
 msgstr "SSL-bakändan \"%s\" stöds inte. Dessa SSL-bakändor stöds:"
 
-#: http.c:1146
+#: http.c:1139
 #, c-format
 msgid "Could not set SSL backend to '%s': cURL was built without SSL backends"
 msgstr "Kan inte sätta SSL-bakända till \"%s\": cURL byggdes utan SSL-bakändor"
 
-#: http.c:1150
+#: http.c:1143
 #, c-format
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "Kunde inte sätta SSL-bakända till \"%s\": redan valt"
 
-#: http.c:2032
+#: http.c:2025
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -22458,111 +22682,134 @@
 "        bad om: %s\n"
 "  omdirigering: %s"
 
-#: remote-curl.c:166
+#: remote-curl.c:168
 #, c-format
 msgid "invalid quoting in push-option value: '%s'"
 msgstr "felaktig citering på värde för push-option: \"%s\""
 
-#: remote-curl.c:263
+#: remote-curl.c:295
 #, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
 msgstr "%sinfo/refs inte giltig: är detta ett git-arkiv?"
 
-#: remote-curl.c:364
+#: remote-curl.c:396
 msgid "invalid server response; expected service, got flush packet"
 msgstr "ogiltigt svar från servern; förväntade tjänst, fick flush-paket"
 
-#: remote-curl.c:395
+#: remote-curl.c:427
 #, c-format
 msgid "invalid server response; got '%s'"
 msgstr "ogiltigt svar från servern; fick \"%s\""
 
-#: remote-curl.c:455
+#: remote-curl.c:487
 #, c-format
 msgid "repository '%s' not found"
 msgstr "arkivet \"%s\" hittades inte"
 
-#: remote-curl.c:459
+#: remote-curl.c:491
 #, c-format
 msgid "Authentication failed for '%s'"
 msgstr "Autentisering misslyckades \"%s\""
 
-#: remote-curl.c:463
+#: remote-curl.c:495
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr "kan inte komma åt \"%s\": %s"
 
-#: remote-curl.c:469
+#: remote-curl.c:501
 #, c-format
 msgid "redirecting to %s"
 msgstr "omdirigerar till %s"
 
-#: remote-curl.c:593
+#: remote-curl.c:630
 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:673
+#: remote-curl.c:642
+msgid "remote server sent stateless separator"
+msgstr "fjärrservern sände tillståndslös avdelare"
+
+#: remote-curl.c:712
 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:733
+#: remote-curl.c:742
+#, c-format
+msgid "remote-curl: bad line length character: %.4s"
+msgstr "remote-curl: felaktig radlängdstecken: %.4s"
+
+#: remote-curl.c:744
+msgid "remote-curl: unexpected response end packet"
+msgstr "remote-curl: oväntat svarsavslutningspaketet"
+
+#: remote-curl.c:820
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC misslyckades; %s"
 
-#: remote-curl.c:773
+#: remote-curl.c:860
 msgid "cannot handle pushes this big"
 msgstr "kan inte hantera så stora sändningar"
 
-#: remote-curl.c:888
+#: remote-curl.c:975
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "kan inte packa upp anrop; zlib-deflate-fel %d"
 
-#: remote-curl.c:892
+#: remote-curl.c:979
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "kan inte packa upp anrop; zlib-slutfel %d"
 
-#: remote-curl.c:1023
+#: remote-curl.c:1029
+#, c-format
+msgid "%d bytes of length header were received"
+msgstr "%d byte av längd-huvudet togs emot"
+
+#: remote-curl.c:1031
+#, c-format
+msgid "%d bytes of body are still expected"
+msgstr "%d byte av kroppen väntas fortfarande"
+
+#: remote-curl.c:1120
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "dum http-transport stöder inte grunda arkiv"
 
-#: remote-curl.c:1038
+#: remote-curl.c:1135
 msgid "fetch failed."
 msgstr "mottagning misslyckades."
 
-#: remote-curl.c:1086
+#: remote-curl.c:1183
 msgid "cannot fetch by sha1 over smart http"
 msgstr "kan inte hämta med sha1 över smart http"
 
-#: remote-curl.c:1130 remote-curl.c:1136
+#: remote-curl.c:1227 remote-curl.c:1233
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "protokollfel: förväntade sha/ref, fick \"%s\""
 
-#: remote-curl.c:1148 remote-curl.c:1263
+#: remote-curl.c:1245 remote-curl.c:1360
 #, c-format
 msgid "http transport does not support %s"
 msgstr "http-transporten stöder inte %s"
 
-#: remote-curl.c:1184
+#: remote-curl.c:1281
 msgid "git-http-push failed"
 msgstr "git-http-push misslyckades"
 
-#: remote-curl.c:1369
+#: remote-curl.c:1466
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: användning: git remote-curl <fjärr> [<url>]"
 
-#: remote-curl.c:1401
+#: remote-curl.c:1498
 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:1408
+#: remote-curl.c:1505
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl: försökte ta emot utan lokalt arkiv"
 
-#: remote-curl.c:1448
+#: remote-curl.c:1546
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl: okänt kommando \"%s\" från git"
@@ -23582,26 +23829,26 @@
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Misslyckades rekursera in i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:878
+#: git-submodule.sh:852
 msgid "The --cached option cannot be used with the --files option"
 msgstr "Flaggan --cached kan inte användas med flaggan --files"
 
-#: git-submodule.sh:930
+#: git-submodule.sh:904
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "oväntat läge $mod_dst"
 
-#: git-submodule.sh:950
+#: git-submodule.sh:924
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr "  Varning: $display_name innehåller inte incheckningen $sha1_src"
 
-#: git-submodule.sh:953
+#: git-submodule.sh:927
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr "  Varning: $display_name innehåller inte incheckningen $sha1_dst"
 
-#: git-submodule.sh:956
+#: git-submodule.sh:930
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -24012,7 +24259,7 @@
 msgstr[0] "rörde %d sökväg\n"
 msgstr[1] "rörde %d sökvägar\n"
 
-#: git-add--interactive.perl:1053
+#: git-add--interactive.perl:1055
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -24020,7 +24267,7 @@
 "Om patchen kan appliceras rent kommer det redigerade stycket att\n"
 "köas omedelbart."
 
-#: git-add--interactive.perl:1056
+#: git-add--interactive.perl:1058
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -24028,7 +24275,7 @@
 "Om patchen kan appliceras rent kommer det redigerade stycket att\n"
 "läggas till i \"stash\" omedelbart."
 
-#: git-add--interactive.perl:1059
+#: git-add--interactive.perl:1061
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -24036,8 +24283,8 @@
 "Om patchen kan appliceras rent kommer det redigerade stycket att\n"
 "tas bort från kön omedelbart."
 
-#: git-add--interactive.perl:1062 git-add--interactive.perl:1071
-#: git-add--interactive.perl:1077
+#: git-add--interactive.perl:1064 git-add--interactive.perl:1073
+#: git-add--interactive.perl:1079
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -24045,8 +24292,8 @@
 "Om patchen kan appliceras rent kommer det redigerade stycket att\n"
 "markeras för applicering omedelbart."
 
-#: git-add--interactive.perl:1065 git-add--interactive.perl:1068
-#: git-add--interactive.perl:1074
+#: git-add--interactive.perl:1067 git-add--interactive.perl:1070
+#: git-add--interactive.perl:1076
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -24054,12 +24301,12 @@
 "Om patchen kan appliceras rent kommer det redigerade stycket att\n"
 "markeras för kasta omedelbart."
 
-#: git-add--interactive.perl:1111
+#: git-add--interactive.perl:1113
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "misslyckades öppna styckeredigeringsfil för skrivning: %s"
 
-#: git-add--interactive.perl:1118
+#: git-add--interactive.perl:1120
 #, perl-format
 msgid ""
 "---\n"
@@ -24072,12 +24319,12 @@
 "Ta bort \"%s\" rader genom att radera dem.\n"
 "Rader som börjar med %s kommer att tas bort.\n"
 
-#: git-add--interactive.perl:1140
+#: git-add--interactive.perl:1142
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "misslyckades öppna styckesredigeringsfil för läsning: %s"
 
-#: git-add--interactive.perl:1248
+#: git-add--interactive.perl:1250
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -24091,7 +24338,7 @@
 "a - köa stycket och alla följande i filen\n"
 "d - köa inte stycket eller något av de följande i filen"
 
-#: git-add--interactive.perl:1254
+#: git-add--interactive.perl:1256
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -24105,7 +24352,7 @@
 "a - \"stash\":a stycket och alla följande i filen\n"
 "d - \"stash\":a inte stycket eller något av de följande i filen"
 
-#: git-add--interactive.perl:1260
+#: git-add--interactive.perl:1262
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -24119,7 +24366,7 @@
 "a - ta bort stycket och alla följande i filen från kön\n"
 "d - ta inte bort stycket eller något av de följande i filen från kön"
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1268
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -24133,7 +24380,7 @@
 "a - applicera stycket och alla följande i filen\n"
 "d - applicera inte stycket eller något av de följande i filen"
 
-#: git-add--interactive.perl:1272 git-add--interactive.perl:1290
+#: git-add--interactive.perl:1274 git-add--interactive.perl:1292
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -24147,7 +24394,7 @@
 "a - förkasta stycket och alla följande i filen\n"
 "d - förkasta inte stycket eller något av de följande i filen"
 
-#: git-add--interactive.perl:1278
+#: git-add--interactive.perl:1280
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -24161,7 +24408,7 @@
 "a - förkasta stycket och alla följande i filen\n"
 "d - förkasta inte stycket eller något av de följande i filen"
 
-#: git-add--interactive.perl:1284
+#: git-add--interactive.perl:1286
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -24175,7 +24422,7 @@
 "a - applicera stycket och alla följande i filen\n"
 "d - applicera inte stycket eller något av de följande i filen"
 
-#: git-add--interactive.perl:1296
+#: git-add--interactive.perl:1298
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -24189,7 +24436,7 @@
 "a - applicera stycket och alla följande i filen\n"
 "d - applicera inte stycket eller något av de följande i filen"
 
-#: git-add--interactive.perl:1311
+#: git-add--interactive.perl:1313
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -24211,85 +24458,90 @@
 "e - redigera aktuellt stycke manuellt\n"
 "? - visa hjälp\n"
 
-#: git-add--interactive.perl:1342
+#: git-add--interactive.perl:1344
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "Markerade stycken kan inte appliceras på indexet!\n"
 
-#: git-add--interactive.perl:1357
+#: git-add--interactive.perl:1359
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "ignorerar ej sammanslagen: %s\n"
 
-#: git-add--interactive.perl:1468
+#: git-add--interactive.perl:1478
 #, perl-format
 msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
 msgstr "Applicera ändrat läge på arbetskatalogen [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1469
+#: git-add--interactive.perl:1479
 #, perl-format
 msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
 msgstr "Applicera borttagning på arbetskatalogen [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1470
+#: git-add--interactive.perl:1480
+#, perl-format
+msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
+msgstr "Applicera tillägg på arbetskatalogen [y,n,q,a,d%s,?]? "
+
+#: git-add--interactive.perl:1481
 #, perl-format
 msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
 msgstr "Applicera stycket på arbetskatalogen [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1570
+#: git-add--interactive.perl:1587
 msgid "No other hunks to goto\n"
 msgstr "Inga andra stycken att gå till\n"
 
-#: git-add--interactive.perl:1588
+#: git-add--interactive.perl:1605
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Ogiltigt siffervärde: \"%s\"\n"
 
-#: git-add--interactive.perl:1593
+#: git-add--interactive.perl:1610
 #, perl-format
 msgid "Sorry, only %d hunk available.\n"
 msgid_plural "Sorry, only %d hunks available.\n"
 msgstr[0] "Beklagar, det finns bara %d stycke.\n"
 msgstr[1] "Beklagar, det finns bara %d stycken.\n"
 
-#: git-add--interactive.perl:1619
+#: git-add--interactive.perl:1636
 msgid "No other hunks to search\n"
 msgstr "Inga andra stycken att söka efter\n"
 
-#: git-add--interactive.perl:1636
+#: git-add--interactive.perl:1653
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Felaktigt format på reguljärt sökuttryck %s: %s\n"
 
-#: git-add--interactive.perl:1646
+#: git-add--interactive.perl:1663
 msgid "No hunk matches the given pattern\n"
 msgstr "Inga stycken motsvarar givet mönster\n"
 
-#: git-add--interactive.perl:1658 git-add--interactive.perl:1680
+#: git-add--interactive.perl:1675 git-add--interactive.perl:1697
 msgid "No previous hunk\n"
 msgstr "Inget föregående stycke\n"
 
-#: git-add--interactive.perl:1667 git-add--interactive.perl:1686
+#: git-add--interactive.perl:1684 git-add--interactive.perl:1703
 msgid "No next hunk\n"
 msgstr "Inget följande stycke\n"
 
-#: git-add--interactive.perl:1692
+#: git-add--interactive.perl:1709
 msgid "Sorry, cannot split this hunk\n"
 msgstr "Beklagar, kan inte dela stycket\n"
 
-#: git-add--interactive.perl:1698
+#: git-add--interactive.perl:1715
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
 msgstr[0] "Dela i %d stycke.\n"
 msgstr[1] "Dela i %d stycken.\n"
 
-#: git-add--interactive.perl:1708
+#: git-add--interactive.perl:1725
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "Beklagar, kan inte redigera stycket\n"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1773
+#: git-add--interactive.perl:1790
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -24306,19 +24558,19 @@
 "diff          - visa diff mellan HEAD och index\n"
 "add untracked - lägg till innehåll i ospårade filer till köade ändringar\n"
 
-#: git-add--interactive.perl:1790 git-add--interactive.perl:1795
-#: git-add--interactive.perl:1798 git-add--interactive.perl:1805
-#: git-add--interactive.perl:1808 git-add--interactive.perl:1815
-#: git-add--interactive.perl:1819 git-add--interactive.perl:1825
+#: git-add--interactive.perl:1807 git-add--interactive.perl:1812
+#: git-add--interactive.perl:1815 git-add--interactive.perl:1822
+#: git-add--interactive.perl:1825 git-add--interactive.perl:1832
+#: git-add--interactive.perl:1836 git-add--interactive.perl:1842
 msgid "missing --"
 msgstr "saknad --"
 
-#: git-add--interactive.perl:1821
+#: git-add--interactive.perl:1838
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "okänt läge för --patch: %s"
 
-#: git-add--interactive.perl:1827 git-add--interactive.perl:1833
+#: git-add--interactive.perl:1844 git-add--interactive.perl:1850
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "felaktigt argument %s, förväntar --"
@@ -24632,50 +24884,50 @@
 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:1718
+#: git-send-email.perl:1722
 #, 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:1753
+#: git-send-email.perl:1757
 #, 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:1864
+#: git-send-email.perl:1868
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Kunde inte köra \"%s\""
 
-#: git-send-email.perl:1871
+#: git-send-email.perl:1875
 #, 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:1875
+#: git-send-email.perl:1879
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) misslyckades stänga röret till \"%s\""
 
-#: git-send-email.perl:1905
+#: git-send-email.perl:1909
 msgid "cannot send message as 7bit"
 msgstr "kan inte sända brev som sjubitars"
 
-#: git-send-email.perl:1913
+#: git-send-email.perl:1917
 msgid "invalid transfer encoding"
 msgstr "ogiltig överföringskondning"
 
-#: git-send-email.perl:1954 git-send-email.perl:2006 git-send-email.perl:2016
+#: git-send-email.perl:1958 git-send-email.perl:2010 git-send-email.perl:2020
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "kunde inte öppna %s: %s\n"
 
-#: git-send-email.perl:1957
+#: git-send-email.perl:1961
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr "%s: patchen innehåller en rad längre än 998 tecken"
 
-#: git-send-email.perl:1974
+#: git-send-email.perl:1978
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr ""
@@ -24683,11 +24935,34 @@
 "säkerhetskopior.\n"
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:1978
+#: git-send-email.perl:1982
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Vill du verkligen sända %s? [y=ja, n=nej]: "
 
+#~ msgid "Finding commits for commit graph from %d ref"
+#~ msgid_plural "Finding commits for commit graph from %d refs"
+#~ msgstr[0] "Söker incheckningar för incheckingsgraf från %d referens"
+#~ msgstr[1] "Söker incheckningar för incheckingsgraf från %d referenser"
+
+#~ msgid "invalid commit object id: %s"
+#~ msgstr "ogiltigt inchecknings-objekt-id %s"
+
+#~ msgid "Removing worktrees/%s: not a valid directory"
+#~ msgstr "Tar bort worktrees/%s: inte en giltig katalog"
+
+#~ msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
+#~ msgstr "Tar bort worktrees/%s: kan inte läsa gitdir-filen (%s)"
+
+#~ msgid "Removing worktrees/%s: invalid gitdir file"
+#~ msgstr "Tar bort worktrees/%s: felaktig gitdir-fil"
+
+#~ msgid "unable to re-add worktree '%s'"
+#~ msgstr "kunde inte lägga in arbetskatalogen \"%s\" igen"
+
+#~ msgid "target '%s' already exists"
+#~ msgstr "målet \"%s\" finns redan"
+
 #~ msgid ""
 #~ "Cannot update sparse checkout: the following entries are not up to date:\n"
 #~ "%s"
@@ -25881,9 +26156,6 @@
 #~ msgid "false|true|preserve"
 #~ msgstr "false|true|preserve"
 
-#~ msgid "unsupported sort specification '%s'"
-#~ msgstr "sorteringsangivelsen \"%s\" stöds ej"
-
 #~ msgid "unsupported sort specification '%s' in variable '%s'"
 #~ msgstr "sorteringsangivelsen \"%s\" i variabeln \"%s\" stöds ej"
 
diff --git a/po/tr.po b/po/tr.po
index a74b885..9a17c19 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -89,8 +89,8 @@
 msgstr ""
 "Project-Id-Version: Git Turkish Localization Project\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-05-27 07:23+0800\n"
-"PO-Revision-Date: 2020-05-27 12 40+0300\n"
+"POT-Creation-Date: 2020-07-10 09:53+0800\n"
+"PO-Revision-Date: 2020-07-10 13:00+0300\n"
 "Last-Translator: Emir SARI <bitigchi@me.com>\n"
 "Language-Team: Turkish (https://github.com/bitigchi/git-po/)\n"
 "Language: tr\n"
@@ -192,21 +192,21 @@
 msgid "ignoring unmerged: %s"
 msgstr "birleştirilmeyenler yok sayılıyor: %s"
 
-#: add-interactive.c:929 add-patch.c:1675 git-add--interactive.perl:1366
+#: add-interactive.c:929 add-patch.c:1691 git-add--interactive.perl:1368
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "Yalnızca ikili dosyalar değiştirildi.\n"
 
-#: add-interactive.c:931 add-patch.c:1673 git-add--interactive.perl:1368
+#: add-interactive.c:931 add-patch.c:1689 git-add--interactive.perl:1370
 #, c-format
 msgid "No changes.\n"
 msgstr "Değişiklik yok.\n"
 
-#: add-interactive.c:935 git-add--interactive.perl:1376
+#: add-interactive.c:935 git-add--interactive.perl:1378
 msgid "Patch update"
 msgstr "Yama güncellemesi"
 
-#: add-interactive.c:974 git-add--interactive.perl:1754
+#: add-interactive.c:974 git-add--interactive.perl:1771
 msgid "Review diff"
 msgstr "diff'i gözden geçir"
 
@@ -274,11 +274,11 @@
 msgid "(empty) select nothing"
 msgstr "(boş) hiçbir şey seçme"
 
-#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1851
+#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1868
 msgid "*** Commands ***"
 msgstr "*** Komutlar ***"
 
-#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1848
+#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1865
 msgid "What now"
 msgstr "Şimdi ne"
 
@@ -295,7 +295,7 @@
 #: builtin/merge.c:276 builtin/pull.c:190 builtin/submodule--helper.c:409
 #: builtin/submodule--helper.c:1394 builtin/submodule--helper.c:1397
 #: builtin/submodule--helper.c:1902 builtin/submodule--helper.c:1905
-#: builtin/submodule--helper.c:2148 bugreport.c:129
+#: builtin/submodule--helper.c:2148 bugreport.c:135
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "yol"
@@ -304,27 +304,32 @@
 msgid "could not refresh index"
 msgstr "indeks yenilenemedi"
 
-#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1765
+#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1782
 #, c-format
 msgid "Bye.\n"
 msgstr "Hoşça kal.\n"
 
-#: add-patch.c:34 git-add--interactive.perl:1428
+#: add-patch.c:34 git-add--interactive.perl:1430
 #, c-format, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "Kip değişimi hazırlansın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:35 git-add--interactive.perl:1429
+#: add-patch.c:35 git-add--interactive.perl:1431
 #, c-format, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "Silme hazırlansın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:36 git-add--interactive.perl:1430
+#: add-patch.c:36 git-add--interactive.perl:1432
+#, c-format, perl-format
+msgid "Stage addition [y,n,q,a,d%s,?]? "
+msgstr "Ekleme hazırlansın mı [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:37 git-add--interactive.perl:1433
 #, c-format, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Bu parça hazırlansın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:38
+#: add-patch.c:39
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "staging."
@@ -332,7 +337,7 @@
 "Eğer yama sorunsuzca uygulanırsa düzenlenen parça derhal hazırlama için "
 "imlenecektir."
 
-#: add-patch.c:41
+#: add-patch.c:42
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -346,22 +351,27 @@
 "a - bu parçayı ve sonraki tüm parçaları hazırla\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini hazırlama\n"
 
-#: add-patch.c:55 git-add--interactive.perl:1433
+#: add-patch.c:56 git-add--interactive.perl:1436
 #, c-format, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "Kip değişimi zulalansın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:56 git-add--interactive.perl:1434
+#: add-patch.c:57 git-add--interactive.perl:1437
 #, c-format, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "Silme zulalansın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:57 git-add--interactive.perl:1435
+#: add-patch.c:58 git-add--interactive.perl:1438
+#, c-format, perl-format
+msgid "Stash addition [y,n,q,a,d%s,?]? "
+msgstr "Ekleme zulalansın mı [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:59 git-add--interactive.perl:1439
 #, c-format, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "Bu parça zulalansın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:59
+#: add-patch.c:61
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "stashing."
@@ -369,7 +379,7 @@
 "Eğer yama sorunsuzca uygulanırsa düzenlenen parça derhal zulalama için "
 "imlenecektir."
 
-#: add-patch.c:62
+#: add-patch.c:64
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -383,22 +393,27 @@
 "a - bu parçayı ve sonraki tüm parçaları zulala\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini zulalama\n"
 
-#: add-patch.c:78 git-add--interactive.perl:1438
+#: add-patch.c:80 git-add--interactive.perl:1442
 #, c-format, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr "Kip değişimi hazırlıktan çıkarılsın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:79 git-add--interactive.perl:1439
+#: add-patch.c:81 git-add--interactive.perl:1443
 #, c-format, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "Silme hazırlıktan çıkarılsın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:80 git-add--interactive.perl:1440
+#: add-patch.c:82 git-add--interactive.perl:1444
+#, c-format, perl-format
+msgid "Unstage addition [y,n,q,a,d%s,?]? "
+msgstr "Ekleme hazırlıktan çıkarılsın mı [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:83 git-add--interactive.perl:1445
 #, c-format, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Bu parça hazırlıktan çıkarılsın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:82
+#: add-patch.c:85
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "unstaging."
@@ -406,7 +421,7 @@
 "Eğer yama sorunsuzca uygulanırsa, düzenlenen parça derhal hazırlıktan "
 "çıkarım için imlenecektir."
 
-#: add-patch.c:85
+#: add-patch.c:88
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -420,22 +435,27 @@
 "a - bu parçayı ve sonraki tüm parçaları hazırlıktan çıkar\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini hazırlıktan çıkarma\n"
 
-#: add-patch.c:100 git-add--interactive.perl:1443
+#: add-patch.c:103 git-add--interactive.perl:1448
 #, c-format, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr "Kip değişimi indekse uygulansın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:101 git-add--interactive.perl:1444
+#: add-patch.c:104 git-add--interactive.perl:1449
 #, c-format, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "Silme indekse uygulansın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:102 git-add--interactive.perl:1445
+#: add-patch.c:105 git-add--interactive.perl:1450
+#, c-format, perl-format
+msgid "Apply addition to index [y,n,q,a,d%s,?]? "
+msgstr "Ekleme indekse uygulansın mı [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:106 git-add--interactive.perl:1451
 #, c-format, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr "Bu parça indekse uygulansın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:104 add-patch.c:169 add-patch.c:212
+#: 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."
@@ -443,7 +463,7 @@
 "Eğer yama sorunsuzca uygulanırsa düzenlenen parça derhal uygulama için "
 "imlenecektir."
 
-#: add-patch.c:107
+#: add-patch.c:111
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -457,25 +477,31 @@
 "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:122 git-add--interactive.perl:1448
-#: git-add--interactive.perl:1463
+#: add-patch.c:126 git-add--interactive.perl:1454
+#: git-add--interactive.perl:1472
 #, c-format, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr "Kip değişimi çalışma ağacından atılsın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:123 git-add--interactive.perl:1449
-#: git-add--interactive.perl:1464
+#: add-patch.c:127 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
 #, c-format, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr "Silme çalışma ağacından atılsın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:124 git-add--interactive.perl:1450
-#: git-add--interactive.perl:1465
+#: add-patch.c:128 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
+#, c-format, perl-format
+msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
+msgstr "Ekleme çalışma ağacından atılsın mı [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:129 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
 #, c-format, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr "Bu parça çalışma ağacından atılsın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:126 add-patch.c:148 add-patch.c:191
+#: 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."
@@ -483,7 +509,7 @@
 "Eğer yama sorunsuzca uygulanırsa düzenlenen parça derhal ıskartaya çıkarım "
 "için imlenecektir."
 
-#: add-patch.c:129 add-patch.c:194
+#: add-patch.c:134 add-patch.c:202
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -497,23 +523,28 @@
 "a - bu parçayı ve sonraki tüm parçaları at\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini atma\n"
 
-#: add-patch.c:144 add-patch.c:187 git-add--interactive.perl:1453
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1460
 #, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Kip değişimi indeksten ve çalışma ağacından atılsın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:145 add-patch.c:188 git-add--interactive.perl:1454
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1461
 #, c-format, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Silme indeksten ve çalışma ağacından atılsın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:146 add-patch.c:189 git-add--interactive.perl:1455
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1462
+#, c-format, perl-format
+msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Ekleme indeksten ve çalışma ağacından atılsın mı [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1463
 #, c-format, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Bu parça indeksten ve çalışma ağacından atılsın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:151
+#: add-patch.c:157
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -527,23 +558,28 @@
 "a - bu parçayı ve sonraki tüm parçaları at\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini atma\n"
 
-#: add-patch.c:165 add-patch.c:208 git-add--interactive.perl:1458
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1466
 #, c-format, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Kip değişimi indekse ve çalışma ağacına uygulansın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:166 add-patch.c:209 git-add--interactive.perl:1459
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1467
 #, c-format, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Silme indekse ve çalışma ağacına uygulansın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:167 add-patch.c:210 git-add--interactive.perl:1460
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1468
+#, c-format, perl-format
+msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Ekleme indekse ve çalışma ağacına uygulansın mı [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1469
 #, c-format, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Bu parça indekse ve çalışma ağacına uygulansın mı [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:172
+#: add-patch.c:179
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -557,7 +593,7 @@
 "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:215
+#: add-patch.c:224
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -571,34 +607,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:319
+#: add-patch.c:328
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "parça üstbilgisi '%.*s' ayrıştırılamadı"
 
-#: add-patch.c:338 add-patch.c:342
+#: add-patch.c:347 add-patch.c:351
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "renklendirilmiş parça üstbilgisi '%.*s' ayrıştırılamadı"
 
-#: add-patch.c:396
+#: add-patch.c:405
 msgid "could not parse diff"
 msgstr "diff ayrıştırılamadı"
 
-#: add-patch.c:415
+#: add-patch.c:424
 msgid "could not parse colored diff"
 msgstr "renklendirilmiş diff ayrıştırılamadı"
 
-#: add-patch.c:429
+#: add-patch.c:438
 #, c-format
 msgid "failed to run '%s'"
 msgstr "'%s' çalıştırılamadı"
 
-#: add-patch.c:588
+#: add-patch.c:602
 msgid "mismatched output from interactive.diffFilter"
 msgstr "interactive.diffFilter ögesinden eşleşmeyen çıktı"
 
-#: add-patch.c:589
+#: add-patch.c:603
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -606,7 +642,7 @@
 "Süzgeciniz kendisinin girdi ve çıktı satırları arasında\n"
 "birebir karşılık sağlamalıdır."
 
-#: add-patch.c:762
+#: add-patch.c:776
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -615,7 +651,7 @@
 "şurada bağlam satırı #%d bekleniyordu:\n"
 "%.*s"
 
-#: add-patch.c:777
+#: add-patch.c:791
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -628,11 +664,11 @@
 "\tşununla bitmiyor:\n"
 "%.*s"
 
-#: add-patch.c:1053 git-add--interactive.perl:1112
+#: add-patch.c:1067 git-add--interactive.perl:1114
 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:1057
+#: add-patch.c:1071
 #, c-format
 msgid ""
 "---\n"
@@ -646,7 +682,7 @@
 "%c kaldırılacak.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1071 git-add--interactive.perl:1126
+#: add-patch.c:1085 git-add--interactive.perl:1128
 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"
@@ -656,11 +692,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:1104
+#: add-patch.c:1118
 msgid "could not parse hunk header"
 msgstr "parça üstbilgisi ayrıştırılamadı"
 
-#: add-patch.c:1149
+#: add-patch.c:1163
 msgid "'git apply --cached' failed"
 msgstr "'git apply --cached' başarısız oldu"
 
@@ -676,26 +712,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:1218 git-add--interactive.perl:1239
+#: add-patch.c:1232 git-add--interactive.perl:1241
 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)\" "
 "demek iptal eder!) [y/n]? "
 
-#: add-patch.c:1261
+#: add-patch.c:1275
 msgid "The selected hunks do not apply to the index!"
 msgstr "Seçili parçalar indekse uygulanamıyor!"
 
-#: add-patch.c:1262 git-add--interactive.perl:1343
+#: add-patch.c:1276 git-add--interactive.perl:1345
 msgid "Apply them to the worktree anyway? "
 msgstr "Çalışma ağacına yine de uygulansın mı? "
 
-#: add-patch.c:1269 git-add--interactive.perl:1346
+#: add-patch.c:1283 git-add--interactive.perl:1348
 msgid "Nothing was applied.\n"
 msgstr "Hiçbir şey uygulanmadı.\n"
 
-#: add-patch.c:1326
+#: add-patch.c:1340
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -717,69 +753,69 @@
 "e - geçerli parçayı el ile düzenle\n"
 "? - yardımı yazdır\n"
 
-#: add-patch.c:1447 add-patch.c:1457
+#: add-patch.c:1463 add-patch.c:1473
 msgid "No previous hunk"
 msgstr "Öncesinde parça yok"
 
-#: add-patch.c:1452 add-patch.c:1462
+#: add-patch.c:1468 add-patch.c:1478
 msgid "No next hunk"
 msgstr "Sonrasında parça yok"
 
-#: add-patch.c:1468
+#: add-patch.c:1484
 msgid "No other hunks to goto"
 msgstr "Gidilecek başka bir parça yok"
 
-#: add-patch.c:1479 git-add--interactive.perl:1577
+#: add-patch.c:1495 git-add--interactive.perl:1594
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "hangi parçaya gidilsin (daha fazla görmek için <ret>)? "
 
-#: add-patch.c:1480 git-add--interactive.perl:1579
+#: add-patch.c:1496 git-add--interactive.perl:1596
 msgid "go to which hunk? "
 msgstr "hangi parçaya gidilsin? "
 
-#: add-patch.c:1491
+#: add-patch.c:1507
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Geçersiz sayı: '%s'"
 
-#: add-patch.c:1496
+#: add-patch.c:1512
 #, 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:1505
+#: add-patch.c:1521
 msgid "No other hunks to search"
 msgstr "Aranacak başka parça yok"
 
-#: add-patch.c:1511 git-add--interactive.perl:1623
+#: add-patch.c:1527 git-add--interactive.perl:1640
 msgid "search for regex? "
 msgstr "düzenli ifade aransın mı? "
 
-#: add-patch.c:1526
+#: add-patch.c:1542
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "Hatalı oluşturulmuş düzenli ifade %s: %s"
 
-#: add-patch.c:1543
+#: add-patch.c:1559
 msgid "No hunk matches the given pattern"
 msgstr "Verilen dizgi ile eşleşen bir parça yok"
 
-#: add-patch.c:1550
+#: add-patch.c:1566
 msgid "Sorry, cannot split this hunk"
 msgstr "Üzgünüm, bu parça bölünemiyor"
 
-#: add-patch.c:1554
+#: add-patch.c:1570
 #, c-format
 msgid "Split into %d hunks."
 msgstr "%d parçaya bölündü."
 
-#: add-patch.c:1558
+#: add-patch.c:1574
 msgid "Sorry, cannot edit this hunk"
 msgstr "Üzgünüm, bu parça düzenlenemiyor"
 
-#: add-patch.c:1609
+#: add-patch.c:1625
 msgid "'git apply' failed"
 msgstr "'git apply' başarısız oldu"
 
@@ -1462,7 +1498,7 @@
 
 #: apply.c:5008 builtin/am.c:2238 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3458 builtin/rebase.c:1332
+#: builtin/pack-objects.c:3530 builtin/rebase.c:1332
 msgid "action"
 msgstr "eylem"
 
@@ -1551,7 +1587,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "yol çok uzun (%d karakter, SHA1: %s): %s"
 
-#: archive-zip.c:480 builtin/pack-objects.c:232 builtin/pack-objects.c:235
+#: archive-zip.c:480 builtin/pack-objects.c:243 builtin/pack-objects.c:246
 #, c-format
 msgid "deflate error (%d)"
 msgstr "söndürme hatası (%d)"
@@ -1620,8 +1656,8 @@
 msgstr "öneki arşivdeki tüm yol adlarının başına ekle"
 
 #: archive.c:467 builtin/blame.c:861 builtin/blame.c:865 builtin/blame.c:866
-#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1162
-#: builtin/fast-export.c:1164 builtin/fast-export.c:1168 builtin/grep.c:907
+#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1208
+#: builtin/fast-export.c:1210 builtin/fast-export.c:1214 builtin/grep.c:907
 #: 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
@@ -1846,10 +1882,10 @@
 msgstr ""
 "--reverse ve --first-parent birlikte en son gönderinin belirtilmesi gerek"
 
-#: blame.c:2821 bundle.c:167 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
+#: blame.c:2821 bundle.c:187 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
 #: sequencer.c:4466 submodule.c:847 builtin/commit.c:1047 builtin/log.c:405
 #: builtin/log.c:1012 builtin/log.c:1541 builtin/log.c:1945 builtin/log.c:2235
-#: builtin/merge.c:415 builtin/pack-objects.c:3276 builtin/pack-objects.c:3291
+#: builtin/merge.c:415 builtin/pack-objects.c:3348 builtin/pack-objects.c:3363
 #: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr "revizyonda gezinme ayarlaması başarısız oldu"
@@ -2014,84 +2050,88 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "%s çalışma ağacının HEAD'i güncellenmemiş"
 
-#: bundle.c:36
+#: bundle.c:47
 #, c-format
 msgid "'%s' does not look like a v2 bundle file"
 msgstr "'%s' bir v2 demet dosyası gibi görünmüyor"
 
-#: bundle.c:64
+#: bundle.c:69
+msgid "unknown hash algorithm length"
+msgstr "bilinmeyen sağlama algoritması uzunluğu"
+
+#: bundle.c:84
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "tanımlanamayan üstbilgi: %s%s (%d)"
 
-#: bundle.c:90 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
+#: bundle.c:110 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
 msgstr "'%s' açılamadı"
 
-#: bundle.c:143
+#: bundle.c:163
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Depo aşağıdaki önceden gereken gönderilere iye değil:"
 
-#: bundle.c:146
+#: bundle.c:166
 msgid "need a repository to verify a bundle"
 msgstr "bir demeti doğrulamak için bir depo gerekiyor"
 
-#: bundle.c:197
+#: bundle.c:217
 #, 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:204
+#: bundle.c:224
 msgid "The bundle records a complete history."
 msgstr "Demet tam bir geçmiş kaydını yazar."
 
-#: bundle.c:206
+#: bundle.c:226
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "Demet şu gönderiyi gerektiriyor:"
 msgstr[1] "Demet şu %d gönderiyi gerektiriyor:"
 
-#: bundle.c:273
+#: bundle.c:293
 msgid "unable to dup bundle descriptor"
 msgstr "demet açıklayıcısı çoğaltılamıyor"
 
-#: bundle.c:280
+#: bundle.c:300
 msgid "Could not spawn pack-objects"
 msgstr "pack-objects ortaya çıkarılamadı"
 
-#: bundle.c:291
+#: bundle.c:311
 msgid "pack-objects died"
 msgstr "pack-objects sonlandı"
 
-#: bundle.c:333
+#: bundle.c:353
 msgid "rev-list died"
 msgstr "rev-list sonlandı"
 
-#: bundle.c:382
+#: bundle.c:402
 #, 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:461 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
+#: bundle.c:481 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "tanımlanamayan değişken: %s"
 
-#: bundle.c:469
+#: bundle.c:489
 msgid "Refusing to create empty bundle."
 msgstr "Boş demet oluşturma reddediliyor."
 
-#: bundle.c:479
+#: bundle.c:499
 #, c-format
 msgid "cannot create '%s'"
 msgstr "'%s' oluşturulamıyor"
 
-#: bundle.c:504
+#: bundle.c:524
 msgid "index-pack died"
 msgstr "index-pack sonlandı"
 
@@ -2100,261 +2140,253 @@
 msgid "invalid color value: %.*s"
 msgstr "geçersiz renk değeri: %.*s"
 
-#: commit-graph.c:183
+#: commit-graph.c:238
 msgid "commit-graph file is too small"
 msgstr "commit-graph dosyası pek küçük"
 
-#: commit-graph.c:248
+#: commit-graph.c:303
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "commit-graph imzası %X, %X ile eşleşmiyor"
 
-#: commit-graph.c:255
+#: commit-graph.c:310
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "commit-graph sürümü %x, %X ile eşleşmiyor"
 
-#: commit-graph.c:262
+#: commit-graph.c:317
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "commit-graph sağlama sürümü %X, %X ile eşleşmiyor"
 
-#: commit-graph.c:284
+#: commit-graph.c:339
 msgid "commit-graph chunk lookup table entry missing; file may be incomplete"
 msgstr ""
 "commit-graph iri parça arama tablosu girdisi eksik; dosya tam olmayabilir"
 
-#: commit-graph.c:294
+#: commit-graph.c:349
 #, c-format
 msgid "commit-graph improper chunk offset %08x%08x"
 msgstr "commit-graph biçimsiz iri parça ofseti %08x%08x"
 
-#: commit-graph.c:362
+#: commit-graph.c:417
 #, c-format
 msgid "commit-graph chunk id %08x appears multiple times"
 msgstr "commit-graph iri parça numarası %08x birden çok görünüyor"
 
-#: commit-graph.c:436
+#: commit-graph.c:491
 msgid "commit-graph has no base graphs chunk"
 msgstr "commit-graph temel grafiği iri parçasına iye değil"
 
-#: commit-graph.c:446
+#: commit-graph.c:501
 msgid "commit-graph chain does not match"
 msgstr "commit-graph zinciri eşleşmiyor"
 
-#: commit-graph.c:494
+#: commit-graph.c:549
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "geçersiz commit-graph zinciri: '%s'. satır bir sağlama değil"
 
-#: commit-graph.c:518
+#: commit-graph.c:573
 msgid "unable to find all commit-graph files"
 msgstr "tüm commit-graph dosyaları bulunamıyor"
 
-#: commit-graph.c:651 commit-graph.c:711
+#: commit-graph.c:706 commit-graph.c:770
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr "geçersiz gönderi konumu. commit-graph büyük olasılıkla hasar görmüş"
 
-#: commit-graph.c:672
+#: commit-graph.c:727
 #, c-format
 msgid "could not find commit %s"
 msgstr "%s gönderisi bulunamadı"
 
-#: commit-graph.c:948 builtin/am.c:1292
+#: commit-graph.c:1009 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "%s gönderisi ayrıştırılamıyor"
 
-#: commit-graph.c:1096
+#: commit-graph.c:1157
 msgid "Writing changed paths Bloom filters index"
 msgstr "Değiştirilmiş yollar için Bloom süzgeçleri indeksi yazılıyor"
 
-#: commit-graph.c:1121
+#: commit-graph.c:1182
 msgid "Writing changed paths Bloom filters data"
 msgstr "Değiştirilmiş yollar için Bloom süzgeçleri verisi yazılıyor"
 
-#: commit-graph.c:1160 builtin/pack-objects.c:2783
+#: commit-graph.c:1221 builtin/pack-objects.c:2832
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "%s nesnesinin türü alınamıyor"
 
-#: commit-graph.c:1196
+#: commit-graph.c:1257
 msgid "Loading known commits in commit graph"
 msgstr "Gönderi grafiğindeki bilinen gönderiler yükleniyor"
 
-#: commit-graph.c:1213
+#: commit-graph.c:1274
 msgid "Expanding reachable commits in commit graph"
 msgstr "Gönderi grafiğindeki ulaşılabilir gönderiler genişletiliyor"
 
-#: commit-graph.c:1233
+#: commit-graph.c:1294
 msgid "Clearing commit marks in commit graph"
 msgstr "Gönderi grafiğindeki gönderi imleri temizleniyor"
 
-#: commit-graph.c:1252
+#: commit-graph.c:1313
 msgid "Computing commit graph generation numbers"
 msgstr "Gönderi grafiği kuşak sayıları hesaplanıyor"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1367
 msgid "Computing commit changed paths Bloom filters"
 msgstr ""
 "Geçerli gönderilerdeki değiştirilmiş yollar için Bloom süzgeci hesaplanıyor"
 
-#: commit-graph.c:1359
+#: commit-graph.c:1423
+msgid "Collecting referenced commits"
+msgstr "Başvurulmuş gönderiler toplanıyor"
+
+#: commit-graph.c:1447
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "Gönderi grafiği için gönderiler %d pakette bulunuyor"
 msgstr[1] "Gönderi grafiği için gönderiler %d pakette bulunuyor"
 
-#: commit-graph.c:1372
+#: commit-graph.c:1460
 #, c-format
 msgid "error adding pack %s"
 msgstr "%s paketi eklenirken hata"
 
-#: commit-graph.c:1376
+#: commit-graph.c:1464
 #, c-format
 msgid "error opening index for %s"
 msgstr "%s için indeks açılırken hata"
 
-#: commit-graph.c:1405
-#, c-format
-msgid "Finding commits for commit graph from %d ref"
-msgid_plural "Finding commits for commit graph from %d refs"
-msgstr[0] "Gönderi grafiği için gönderiler %d başvurudan bulunuyor"
-msgstr[1] "Gönderi grafiği için gönderiler %d başvurudan bulunuyor"
-
-#: commit-graph.c:1426
-#, c-format
-msgid "invalid commit object id: %s"
-msgstr "geçersiz gönderi nesne numarası: %s"
-
-#: commit-graph.c:1442
+#: commit-graph.c:1503
 msgid "Finding commits for commit graph among packed objects"
 msgstr ""
 "Gönderi grafiği için gönderiler paketlenmiş nesneler arasından bulunuyor"
 
-#: commit-graph.c:1457
+#: commit-graph.c:1518
 msgid "Counting distinct commits in commit graph"
 msgstr "Gönderi grafiğindeki belirgin gönderiler sayılıyor"
 
-#: commit-graph.c:1489
+#: commit-graph.c:1550
 msgid "Finding extra edges in commit graph"
 msgstr "Gönderi grafiğindeki ek sınırlar bulunuyor"
 
-#: commit-graph.c:1538
+#: commit-graph.c:1599
 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:1572 midx.c:812
+#: commit-graph.c:1633 midx.c:812
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "%s öncü dizinleri oluşturulamıyor"
 
-#: commit-graph.c:1585
+#: commit-graph.c:1646
 msgid "unable to create temporary graph layer"
 msgstr "geçici grafik katmanı oluşturulamıyor"
 
-#: commit-graph.c:1590
+#: commit-graph.c:1651
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "'%s' için paylaşılan izinler ayarlanamıyor"
 
-#: commit-graph.c:1667
+#: commit-graph.c:1728
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "Gönderi grafiği %d geçişte yazılıyor"
 msgstr[1] "Gönderi grafiği %d geçişte yazılıyor"
 
-#: commit-graph.c:1712
+#: commit-graph.c:1773
 msgid "unable to open commit-graph chain file"
 msgstr "commit-graph zincir dosyası açılamıyor"
 
-#: commit-graph.c:1728
+#: commit-graph.c:1789
 msgid "failed to rename base commit-graph file"
 msgstr "temel commit-graph dosyası yeniden adlandırılamadı"
 
-#: commit-graph.c:1748
+#: commit-graph.c:1809
 msgid "failed to rename temporary commit-graph file"
 msgstr "geçici commit-graph dosyası yeniden adlandırılamadı"
 
-#: commit-graph.c:1874
+#: commit-graph.c:1935
 msgid "Scanning merged commits"
 msgstr "Birleştirilen gönderiler taranıyor"
 
-#: commit-graph.c:1885
+#: commit-graph.c:1946
 #, c-format
 msgid "unexpected duplicate commit id %s"
 msgstr "beklenmedik yinelenmiş gönderi numarası %s"
 
-#: commit-graph.c:1908
+#: commit-graph.c:1969
 msgid "Merging commit-graph"
 msgstr "commit-graph birleştiriliyor"
 
-#: commit-graph.c:2096
+#: commit-graph.c:2156
 #, c-format
 msgid "the commit graph format cannot write %d commits"
 msgstr "gönderi grafiği biçimi %d gönderiyi yazamıyor"
 
-#: commit-graph.c:2107
+#: commit-graph.c:2167
 msgid "too many commits to write graph"
 msgstr "grafik yazabilmek için çok fazla gönderi"
 
-#: commit-graph.c:2200
+#: commit-graph.c:2260
 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:2210
+#: commit-graph.c:2270
 #, 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:2220 commit-graph.c:2235
+#: commit-graph.c:2280 commit-graph.c:2295
 #, 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:2227
+#: commit-graph.c:2287
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "%s gönderisi commit-graph'tan ayrıştırılamadı"
 
-#: commit-graph.c:2245
+#: commit-graph.c:2305
 msgid "Verifying commits in commit graph"
 msgstr "Gönderi grafiğindeki gönderiler doğrulanıyor"
 
-#: commit-graph.c:2259
+#: commit-graph.c:2320
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr ""
 "%s gönderisi commit-graph için olan nesne veritabanından ayrıştırılamadı"
 
-#: commit-graph.c:2266
+#: commit-graph.c:2327
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr ""
 "commit-graph'teki %s gönderisi için olan kök ağaç nesne tanımlayıcısı %s != "
 "%s"
 
-#: commit-graph.c:2276
+#: commit-graph.c:2337
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "%s gönderisi için olan commit-graph üst öge listesi çok uzun"
 
-#: commit-graph.c:2285
+#: commit-graph.c:2346
 #, 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:2298
+#: commit-graph.c:2360
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr ""
 "%s gönderisi için olan commit-graph üst öge listesi erkenden sonlanıyor"
 
-#: commit-graph.c:2303
+#: commit-graph.c:2365
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2362,7 +2394,7 @@
 "%s gönderisi için commit-graph kuşak sayısı sıfır ancak başka yerlerde "
 "sıfırdan farklı"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2369
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2370,12 +2402,12 @@
 "%s gönderisi için commit-graph kuşak sayısı sıfırdan farklı, ancak başka "
 "yerlerde sıfır"
 
-#: commit-graph.c:2322
+#: commit-graph.c:2385
 #, c-format
 msgid "commit-graph generation for commit %s is %u != %u"
 msgstr "%s gönderisi için commit-graph kuşağı %u != %u"
 
-#: commit-graph.c:2328
+#: commit-graph.c:2391
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
@@ -2413,28 +2445,28 @@
 "\"git config advice.graftFileDeprecated false\"\n"
 "kullanarak bu iletiyi kapatabilirsiniz."
 
-#: commit.c:1168
+#: commit.c:1172
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 "%s gönderisinin güvenilmeyen bir GPG imzası var, iddiaya göre %s tarafından."
 
-#: commit.c:1172
+#: commit.c:1176
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "%s gönderisinin hatalı bir GPG imzası var, iddiaya göre %s tarafından."
 
-#: commit.c:1175
+#: commit.c:1179
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "%s gönderisinin bir GPG imzası yok."
 
-#: commit.c:1178
+#: commit.c:1182
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "%s gönderisinin %s tarafından sağlanan düzgün bir GPG imzası var\n"
 
-#: commit.c:1432
+#: commit.c:1436
 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"
@@ -2631,7 +2663,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:1533 builtin/pack-objects.c:3542
+#: config.c:1533 builtin/pack-objects.c:3617
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "hatalı paket sıkıştırma düzeyi %d"
@@ -2780,72 +2812,81 @@
 msgid "server doesn't support '%s'"
 msgstr "sunucu '%s' desteklemiyor"
 
-#: connect.c:103
+#: connect.c:118
 #, c-format
 msgid "server doesn't support feature '%s'"
 msgstr "sunucu '%s' özelliğini desteklemiyor"
 
-#: connect.c:114
+#: connect.c:129
 msgid "expected flush after capabilities"
 msgstr "yeteneklerden sonra floş bekleniyordu"
 
-#: connect.c:233
+#: connect.c:263
 #, c-format
 msgid "ignoring capabilities after first line '%s'"
 msgstr "'%s' ilk satırından sonra yetenekler yok sayılıyor"
 
-#: connect.c:252
+#: connect.c:284
 msgid "protocol error: unexpected capabilities^{}"
 msgstr "protokol hatası: beklenmedik yetenekler^{}"
 
-#: connect.c:273
+#: connect.c:306
 #, c-format
 msgid "protocol error: expected shallow sha-1, got '%s'"
 msgstr "protokol hatası: sığ sha-1 bekleniyordu, '%s' alındı"
 
-#: connect.c:275
+#: connect.c:308
 msgid "repository on the other end cannot be shallow"
 msgstr "diğer uçtaki depo sığ olamaz"
 
-#: connect.c:313
+#: connect.c:347
 msgid "invalid packet"
 msgstr "geçersiz paket"
 
-#: connect.c:333
+#: connect.c:367
 #, c-format
 msgid "protocol error: unexpected '%s'"
 msgstr "protokol hatası: beklenmedik '%s'"
 
-#: connect.c:441
+#: connect.c:473
+#, c-format
+msgid "unknown object format '%s' specified by server"
+msgstr "geçersiz nesne biçimi '%s' sunucu tarafından belirtildi"
+
+#: connect.c:500
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "geçersiz ls-refs yanıtı: %s"
 
-#: connect.c:445
+#: connect.c:504
 msgid "expected flush after ref listing"
 msgstr "başvuru listelemesinden sonra floş bekleniyordu"
 
-#: connect.c:544
+#: connect.c:507
+msgid "expected response end packet after ref listing"
+msgstr "başvuru listelemesinden sonra yanıt sonu paketi bekleniyordu"
+
+#: connect.c:640
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "'%s' protokolü desteklenmiyor"
 
-#: connect.c:595
+#: connect.c:691
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "soket üzerinde SO_KEEPALIVE ayarlanamıyor"
 
-#: connect.c:635 connect.c:698
+#: connect.c:731 connect.c:794
 #, c-format
 msgid "Looking up %s ... "
 msgstr "%s aranıyor..."
 
-#: connect.c:639
+#: connect.c:735
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "%s aranamıyor (kapı %s) (%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:643 connect.c:714
+#: connect.c:739 connect.c:810
 #, c-format
 msgid ""
 "done.\n"
@@ -2854,7 +2895,7 @@
 "bitti.\n"
 "Şuraya bağlanıyor: %s (kapı %s)..."
 
-#: connect.c:665 connect.c:742
+#: connect.c:761 connect.c:838
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2864,73 +2905,73 @@
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:671 connect.c:748
+#: connect.c:767 connect.c:844
 msgid "done."
 msgstr "bitti."
 
-#: connect.c:702
+#: connect.c:798
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "%s aranamıyor (%s)"
 
-#: connect.c:708
+#: connect.c:804
 #, c-format
 msgid "unknown port %s"
 msgstr "bilinmeyen kapı %s"
 
-#: connect.c:845 connect.c:1175
+#: connect.c:941 connect.c:1271
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "garip makine adı '%s' engellendi"
 
-#: connect.c:847
+#: connect.c:943
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "garip kapı '%s' engellendi"
 
-#: connect.c:857
+#: connect.c:953
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "vekil %s başlatılamıyor"
 
-#: connect.c:928
+#: connect.c:1024
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr "yol belirtilmedi; geçerli url sözdizimi için 'git help pull' yazın"
 
-#: connect.c:1123
+#: connect.c:1219
 msgid "ssh variant 'simple' does not support -4"
 msgstr "ssh değişik biçimi 'simple' -4 desteklemiyor"
 
-#: connect.c:1135
+#: connect.c:1231
 msgid "ssh variant 'simple' does not support -6"
 msgstr "ssh değişik biçimi 'simple' -6 desteklemiyor"
 
-#: connect.c:1152
+#: connect.c:1248
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "ssh değişik biçimi 'simple' kapı ayarlamayı desteklemiyor"
 
-#: connect.c:1264
+#: connect.c:1360
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "garip yol adı '%s' engellendi"
 
-#: connect.c:1311
+#: connect.c:1407
 msgid "unable to fork"
 msgstr "çatallanamıyor"
 
-#: connected.c:107 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:109 builtin/fsck.c:209 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Bağlantı denetleniyor"
 
-#: connected.c:119
+#: connected.c:121
 msgid "Could not run 'git rev-list'"
 msgstr "'git rev-list' çalıştırılamadı"
 
-#: connected.c:139
+#: connected.c:141
 msgid "failed write to rev-list"
 msgstr "rev-list yazılamadı"
 
-#: connected.c:146
+#: connected.c:148
 msgid "failed to close rev-list's stdin"
 msgstr "rev-list'in stdin'i kapatılamadı"
 
@@ -3195,17 +3236,17 @@
 "Bir git deposu değil. Bir çalışma ağacının dışındaki iki yolu karşılaştırmak "
 "için --no-index kullanın."
 
-#: diff.c:155
+#: diff.c:156
 #, c-format
 msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
 msgstr "  dirstat kesim yüzdesi '%s' ayrıştırılamadı\n"
 
-#: diff.c:160
+#: diff.c:161
 #, c-format
 msgid "  Unknown dirstat parameter '%s'\n"
 msgstr "  Bilinmeyen dirstat parametresi '%s'\n"
 
-#: diff.c:296
+#: diff.c:297
 msgid ""
 "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
 "'dimmed-zebra', 'plain'"
@@ -3213,7 +3254,7 @@
 "\"color-moved\" ayarı 'no', 'default', 'blocks', 'zebra', 'dimmed-zebra', "
 "'plain' seçeneklerinden biri olmalıdır"
 
-#: diff.c:324
+#: diff.c:325
 #, c-format
 msgid ""
 "unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', "
@@ -3222,7 +3263,7 @@
 "bilinmeyen color-moved-ws kipi '%s', olabilecek değerler: 'ignore-space-"
 "change', 'ignore-space-at-eol', 'ignore-all-space' 'allow-indentation-change'"
 
-#: diff.c:332
+#: diff.c:333
 msgid ""
 "color-moved-ws: allow-indentation-change cannot be combined with other "
 "whitespace modes"
@@ -3230,12 +3271,12 @@
 "color-moved-ws: allow-indentation-change diğer boşluk kipleri ile birlikte "
 "kullanılamaz"
 
-#: diff.c:405
+#: diff.c:410
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
 msgstr "'diff.submodule' yapılandırma değişkeni için bilinmeyen değer: '%s'"
 
-#: diff.c:465
+#: diff.c:470
 #, c-format
 msgid ""
 "Found errors in 'diff.dirstat' config variable:\n"
@@ -3244,35 +3285,35 @@
 "'diff.dirstat' yapılandırma değişkeninde hatalar bulundu:\n"
 "%s"
 
-#: diff.c:4238
+#: diff.c:4243
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "dış diff sonlandı, %s konumunda durdu"
 
-#: diff.c:4583
+#: diff.c:4589
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check ve -s birlikte kullanılmaz"
 
-#: diff.c:4586
+#: diff.c:4592
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S ve --find-object birlikte kullanılmaz"
 
-#: diff.c:4664
+#: diff.c:4670
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow tam olarak yalnızca bir yol belirteci gerektiriyor"
 
-#: diff.c:4712
+#: diff.c:4718
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "geçersiz --stat değeri: %s"
 
-#: diff.c:4717 diff.c:4722 diff.c:4727 diff.c:4732 diff.c:5245
+#: diff.c:4723 diff.c:4728 diff.c:4733 diff.c:4738 diff.c:5250
 #: parse-options.c:197 parse-options.c:201
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s bir sayısal değer bekliyor"
 
-#: diff.c:4749
+#: diff.c:4755
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3281,42 +3322,42 @@
 "--dirstat/-X seçenek parametresi ayrıştırılamadı:\n"
 "%s"
 
-#: diff.c:4834
+#: diff.c:4840
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "şurada bilinmeyen değişiklik sınıfı '%c': -diff-filter=%s"
 
-#: diff.c:4858
+#: diff.c:4864
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "şundan sonra bilinmeyen değer: ws-error-highlight=%.*s"
 
-#: diff.c:4872
+#: diff.c:4878
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "'%s' çözülemiyor"
 
-#: diff.c:4922 diff.c:4928
+#: diff.c:4928 diff.c:4934
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s <n>/<m> biçimi bekliyor"
 
-#: diff.c:4940
+#: diff.c:4946
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s bir karakter bekliyor, '%s' aldı"
 
-#: diff.c:4961
+#: diff.c:4967
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "hatalı --color-moved değişkeni: %s"
 
-#: diff.c:4980
+#: diff.c:4986
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "--color-moved-ws içinde geçersiz kip '%s'"
 
-#: diff.c:5020
+#: diff.c:5026
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3324,157 +3365,157 @@
 "diff-algorithm seçeneği şunları kabul eder: \"myers\", \"minimal\", "
 "\"patience\" ve \"histogram\""
 
-#: diff.c:5056 diff.c:5076
+#: diff.c:5062 diff.c:5082
 #, c-format
 msgid "invalid argument to %s"
 msgstr "%s için geçersiz değişken"
 
-#: diff.c:5214
+#: diff.c:5219
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "--submodule seçenek parametresi ayrıştırılamadı: '%s'"
 
-#: diff.c:5270
+#: diff.c:5275
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "hatalı --word-diff değişkeni: %s"
 
-#: diff.c:5293
+#: diff.c:5298
 msgid "Diff output format options"
 msgstr "Diff çıktısı biçimlendirme seçenekleri"
 
-#: diff.c:5295 diff.c:5301
+#: diff.c:5300 diff.c:5306
 msgid "generate patch"
 msgstr "yama oluştur"
 
-#: diff.c:5298 builtin/log.c:177
+#: diff.c:5303 builtin/log.c:177
 msgid "suppress diff output"
 msgstr "diff çıktısını gizle"
 
-#: diff.c:5303 diff.c:5417 diff.c:5424
+#: diff.c:5308 diff.c:5422 diff.c:5429
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5304 diff.c:5307
+#: diff.c:5309 diff.c:5312
 msgid "generate diffs with <n> lines context"
 msgstr "diff'leri <n> satır bağlamlı oluştur"
 
-#: diff.c:5309
+#: diff.c:5314
 msgid "generate the diff in raw format"
 msgstr "diff'i ham biçimde oluştur"
 
-#: diff.c:5312
+#: diff.c:5317
 msgid "synonym for '-p --raw'"
 msgstr "'-p --raw eşanlamlısı"
 
-#: diff.c:5316
+#: diff.c:5321
 msgid "synonym for '-p --stat'"
 msgstr "'-p --stat eşanlamlısı"
 
-#: diff.c:5320
+#: diff.c:5325
 msgid "machine friendly --stat"
 msgstr "makinede okunabilen --stat"
 
-#: diff.c:5323
+#: diff.c:5328
 msgid "output only the last line of --stat"
 msgstr "--stat'ın yalnızca son satırını çıktı ver"
 
-#: diff.c:5325 diff.c:5333
+#: diff.c:5330 diff.c:5338
 msgid "<param1,param2>..."
 msgstr "<param1,param2>..."
 
-#: diff.c:5326
+#: diff.c:5331
 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:5330
+#: diff.c:5335
 msgid "synonym for --dirstat=cumulative"
 msgstr "--dirstat-cumulative eşanlamlısı"
 
-#: diff.c:5334
+#: diff.c:5339
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "--dirstat=files,param1,param2... eşanlamlısı"
 
-#: diff.c:5338
+#: diff.c:5343
 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:5341
+#: diff.c:5346
 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:5344
+#: diff.c:5349
 msgid "show only names of changed files"
 msgstr "yalnızca değiştirilen dosyaların adlarını göster"
 
-#: diff.c:5347
+#: diff.c:5352
 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:5349
+#: diff.c:5354
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<genişlik>[,<ad-genişlik>[,<sayım>]]"
 
-#: diff.c:5350
+#: diff.c:5355
 msgid "generate diffstat"
 msgstr "diffstat oluştur"
 
-#: diff.c:5352 diff.c:5355 diff.c:5358
+#: diff.c:5357 diff.c:5360 diff.c:5363
 msgid "<width>"
 msgstr "<genişlik>"
 
-#: diff.c:5353
+#: diff.c:5358
 msgid "generate diffstat with a given width"
 msgstr "diffstat'ı verilmiş bir genişlik ile oluştur"
 
-#: diff.c:5356
+#: diff.c:5361
 msgid "generate diffstat with a given name width"
 msgstr "diffstat'ı verilmiş bir ad genişliği ile oluştur"
 
-#: diff.c:5359
+#: diff.c:5364
 msgid "generate diffstat with a given graph width"
 msgstr "diffstat'ı verilmiş bir grafik genişliği ile oluştur"
 
-#: diff.c:5361
+#: diff.c:5366
 msgid "<count>"
 msgstr "<sayım>"
 
-#: diff.c:5362
+#: diff.c:5367
 msgid "generate diffstat with limited lines"
 msgstr "diffstat'ı kısıtlı satırlarla oluştur"
 
-#: diff.c:5365
+#: diff.c:5370
 msgid "generate compact summary in diffstat"
 msgstr "diffstat içinde ufak özet oluştur"
 
-#: diff.c:5368
+#: diff.c:5373
 msgid "output a binary diff that can be applied"
 msgstr "uygulanabilir bir ikili diff çıktısı ver"
 
-#: diff.c:5371
+#: diff.c:5376
 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:5373
+#: diff.c:5378
 msgid "show colored diff"
 msgstr "renkli diff göster"
 
-#: diff.c:5374
+#: diff.c:5379
 msgid "<kind>"
 msgstr "<tür>"
 
-#: diff.c:5375
+#: diff.c:5380
 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:5378
+#: diff.c:5383
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3482,88 +3523,88 @@
 "--raw veya --numstat içinde yol adlarını tahrip etme ve çıktı alanı "
 "sonlandırıcıları olarak NUL'ları kullan"
 
-#: diff.c:5381 diff.c:5384 diff.c:5387 diff.c:5493
+#: diff.c:5386 diff.c:5389 diff.c:5392 diff.c:5498
 msgid "<prefix>"
 msgstr "<önek>"
 
-#: diff.c:5382
+#: diff.c:5387
 msgid "show the given source prefix instead of \"a/\""
 msgstr "\"a/\" yerine verilmiş kaynak önekini göster"
 
-#: diff.c:5385
+#: diff.c:5390
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "\"b/\"yerine verilmiş kaynak önekini göster"
 
-#: diff.c:5388
+#: diff.c:5393
 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:5391
+#: diff.c:5396
 msgid "do not show any source or destination prefix"
 msgstr "hiçbir kaynak ve hedef önekini gösterme"
 
-#: diff.c:5394
+#: diff.c:5399
 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:5398 diff.c:5403 diff.c:5408
+#: diff.c:5403 diff.c:5408 diff.c:5413
 msgid "<char>"
 msgstr "<karakter>"
 
-#: diff.c:5399
+#: diff.c:5404
 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:5404
+#: diff.c:5409
 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:5409
+#: diff.c:5414
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "bağlam belirtmek için ' ' yerine kullanılacak karakteri belirle"
 
-#: diff.c:5412
+#: diff.c:5417
 msgid "Diff rename options"
 msgstr "Diff yeniden adlandırma seçenekleri"
 
-#: diff.c:5413
+#: diff.c:5418
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5414
+#: diff.c:5419
 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:5418
+#: diff.c:5423
 msgid "detect renames"
 msgstr "yeniden adlandırmaları algıla"
 
-#: diff.c:5422
+#: diff.c:5427
 msgid "omit the preimage for deletes"
 msgstr "silmeler için öngörüntüyü atla"
 
-#: diff.c:5425
+#: diff.c:5430
 msgid "detect copies"
 msgstr "kopyaları algıla"
 
-#: diff.c:5429
+#: diff.c:5434
 msgid "use unmodified files as source to find copies"
 msgstr "değiştirilmemiş dosyaları kopyaları bulmak için kaynak olarak kullan"
 
-#: diff.c:5431
+#: diff.c:5436
 msgid "disable rename detection"
 msgstr "yeniden adlandırma algılamasını devre dışı bırak"
 
-#: diff.c:5434
+#: diff.c:5439
 msgid "use empty blobs as rename source"
 msgstr "boş ikili nesneleri yeniden adlandırma kaynağı olarak kullan"
 
-#: diff.c:5436
+#: diff.c:5441
 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:5439
+#: diff.c:5444
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3571,218 +3612,218 @@
 "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:5441
+#: diff.c:5446
 msgid "Diff algorithm options"
 msgstr "Diff algoritma seçenekleri"
 
-#: diff.c:5443
+#: diff.c:5448
 msgid "produce the smallest possible diff"
 msgstr "olabilecek en küçük diff'i üret"
 
-#: diff.c:5446
+#: diff.c:5451
 msgid "ignore whitespace when comparing lines"
 msgstr "satırları karşılaştırırken boşlukları yok say"
 
-#: diff.c:5449
+#: diff.c:5454
 msgid "ignore changes in amount of whitespace"
 msgstr "boşluk sayısındaki değişiklikleri yok say"
 
-#: diff.c:5452
+#: diff.c:5457
 msgid "ignore changes in whitespace at EOL"
 msgstr "satır sonundaki boşluk değişikliklerini yok say"
 
-#: diff.c:5455
+#: diff.c:5460
 msgid "ignore carrier-return at the end of line"
 msgstr "satır sonundaki satırbaşı karakterini yok say"
 
-#: diff.c:5458
+#: diff.c:5463
 msgid "ignore changes whose lines are all blank"
 msgstr "satırlarının tümü boş olan değişiklikleri yok say"
 
-#: diff.c:5461
+#: diff.c:5466
 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:5464
+#: diff.c:5469
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "diff'i \"patience diff\" algoritmasını kullanarak oluştur"
 
-#: diff.c:5468
+#: diff.c:5473
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "diff'i \"histogram diff\" algoritmasını kullanarak oluştur"
 
-#: diff.c:5470
+#: diff.c:5475
 msgid "<algorithm>"
 msgstr "<algoritma>"
 
-#: diff.c:5471
+#: diff.c:5476
 msgid "choose a diff algorithm"
 msgstr "bir diff algoritması seç"
 
-#: diff.c:5473
+#: diff.c:5478
 msgid "<text>"
 msgstr "<metin>"
 
-#: diff.c:5474
+#: diff.c:5479
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "diff'i \"anchored diff\" algoritmasını kullanarak oluştur"
 
-#: diff.c:5476 diff.c:5485 diff.c:5488
+#: diff.c:5481 diff.c:5490 diff.c:5493
 msgid "<mode>"
 msgstr "<kip>"
 
-#: diff.c:5477
+#: diff.c:5482
 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:5479 diff.c:5482 diff.c:5527
+#: diff.c:5484 diff.c:5487 diff.c:5532
 msgid "<regex>"
 msgstr "<ifade>"
 
-#: diff.c:5480
+#: diff.c:5485
 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:5483
+#: diff.c:5488
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "şuna eşdeğer: --word-diff=color --word-diff-regex=<ifade>"
 
-#: diff.c:5486
+#: diff.c:5491
 msgid "moved lines of code are colored differently"
 msgstr "taşınan kod satırları farklı renklendirilir"
 
-#: diff.c:5489
+#: diff.c:5494
 msgid "how white spaces are ignored in --color-moved"
 msgstr "boşluklar --color-moved içinde nasıl yok sayılır"
 
-#: diff.c:5492
+#: diff.c:5497
 msgid "Other diff options"
 msgstr "Diğer diff seçenekleri"
 
-#: diff.c:5494
+#: diff.c:5499
 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:5498
+#: diff.c:5503
 msgid "treat all files as text"
 msgstr "tüm dosyaları metin olarak varsay"
 
-#: diff.c:5500
+#: diff.c:5505
 msgid "swap two inputs, reverse the diff"
 msgstr "iki girdiyi değiştir, diff'i tersine döndür"
 
-#: diff.c:5502
+#: diff.c:5507
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "ayrımlar varsa 1 ile, yoksa 0 ile çık"
 
-#: diff.c:5504
+#: diff.c:5509
 msgid "disable all output of the program"
 msgstr "tüm program çıktısını devre dışı bırak"
 
-#: diff.c:5506
+#: diff.c:5511
 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:5508
+#: diff.c:5513
 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:5510
+#: diff.c:5515
 msgid "<when>"
 msgstr "<ne-zaman>"
 
-#: diff.c:5511
+#: diff.c:5516
 msgid "ignore changes to submodules in the diff generation"
 msgstr "diff oluştururken altmodüllere olan değişiklikleri yok say"
 
-#: diff.c:5514
+#: diff.c:5519
 msgid "<format>"
 msgstr "<biçim>"
 
-#: diff.c:5515
+#: diff.c:5520
 msgid "specify how differences in submodules are shown"
 msgstr "altmodüllerdeki değişikliklerin nasıl gösterileceğini belirt"
 
-#: diff.c:5519
+#: diff.c:5524
 msgid "hide 'git add -N' entries from the index"
 msgstr "indeksten 'git add -N' girdilerini gizle"
 
-#: diff.c:5522
+#: diff.c:5527
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "indekste 'git add -N' girdilerine gerçekmiş gibi davran"
 
-#: diff.c:5524
+#: diff.c:5529
 msgid "<string>"
 msgstr "<dizi>"
 
-#: diff.c:5525
+#: diff.c:5530
 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:5528
+#: diff.c:5533
 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:5531
+#: diff.c:5536
 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:5534
+#: diff.c:5539
 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:5537
+#: diff.c:5542
 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:5538
+#: diff.c:5543
 msgid "<object-id>"
 msgstr "<nesne-no>"
 
-#: diff.c:5539
+#: diff.c:5544
 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:5541
+#: diff.c:5546
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5542
+#: diff.c:5547
 msgid "select files by diff type"
 msgstr "dosyaları diff türüne göre seç"
 
-#: diff.c:5544
+#: diff.c:5549
 msgid "<file>"
 msgstr "<dosya>"
 
-#: diff.c:5545
+#: diff.c:5550
 msgid "Output to a specific file"
 msgstr "belirli bir dosyaya çıktı ver"
 
-#: diff.c:6200
+#: diff.c:6205
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 "Kesin olmayan yeniden adlandırma algılaması çok fazla dosya olmasından "
 "dolayı atlandı."
 
-#: diff.c:6203
+#: diff.c:6208
 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:6206
+#: diff.c:6211
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3799,59 +3840,59 @@
 msgid "Performing inexact rename detection"
 msgstr "Kesin olmayan yeniden adlandırma algılaması gerçekleştiriliyor"
 
-#: dir.c:555
+#: dir.c:573
 #, 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:695 dir.c:724 dir.c:737
+#: dir.c:713 dir.c:742 dir.c:755
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "tanımlanamayan dizgi: '%s'"
 
-#: dir.c:754 dir.c:768
+#: dir.c:772 dir.c:786
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "tanımlanamayan negatif dizgi: '%s'"
 
-#: dir.c:786
+#: dir.c:804
 #, 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:796
+#: dir.c:814
 msgid "disabling cone pattern matching"
 msgstr "koni dizgi eşleşmesi devre dışı bırakılıyor"
 
-#: dir.c:1173
+#: dir.c:1191
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "%s bir 'exclude' dosyası olarak kullanılamıyor"
 
-#: dir.c:2275
+#: dir.c:2296
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "'%s' dizini açılamadı"
 
-#: dir.c:2575
+#: dir.c:2596
 msgid "failed to get kernel name and information"
 msgstr "çekirdek adı ve bilgisi alınamadı"
 
-#: dir.c:2699
+#: dir.c:2720
 msgid "untracked cache is disabled on this system or location"
 msgstr "izlenmeyen önbellek bu sistemde veya konumda devre dışı bırakılmış"
 
-#: dir.c:3481
+#: dir.c:3502
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "%s deposundaki indeks dosyası hasarlı"
 
-#: dir.c:3526 dir.c:3531
+#: dir.c:3547 dir.c:3552
 #, c-format
 msgid "could not create directories for %s"
 msgstr "%s için dizinler oluşturulamadı"
 
-#: dir.c:3560
+#: dir.c:3581
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "git dizini '%s' konumundan '%s' konumuna göç ettirilemedi"
@@ -3861,11 +3902,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr "İpucu: Düzenleyicinizin dosyayı kapatması bekleniyor...%c"
 
-#: entry.c:178
+#: entry.c:177
 msgid "Filtering content"
 msgstr "İçerik süzülüyor"
 
-#: entry.c:479
+#: entry.c:478
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "'%s' dosyasının bilgileri alınamadı"
@@ -3885,227 +3926,245 @@
 msgid "too many args to run %s"
 msgstr "%s çalıştırmak için çok fazla değişken"
 
-#: fetch-pack.c:151
+#: fetch-pack.c:152
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: sığ bir liste bekleniyordu"
 
-#: fetch-pack.c:154
+#: fetch-pack.c:155
 msgid "git fetch-pack: expected a flush packet after shallow list"
 msgstr "git fetch-pack: sığ listeden sonra floş paketi bekleniyordu"
 
-#: fetch-pack.c:165
+#: fetch-pack.c:166
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack: ACK/NAK bekleniyordu, floş paket alındı"
 
-#: fetch-pack.c:185
+#: fetch-pack.c:186
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack: ACK/NAK bekleniyordu, '%s' alındı"
 
-#: fetch-pack.c:196
+#: fetch-pack.c:197
 msgid "unable to write to remote"
 msgstr "uzak konuma yazılamıyor"
 
-#: fetch-pack.c:258
+#: fetch-pack.c:259
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc multi_ack_detailed gerektiriyor"
 
-#: fetch-pack.c:357 fetch-pack.c:1364
+#: fetch-pack.c:358 fetch-pack.c:1408
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "geçersiz sığ satır: %s"
 
-#: fetch-pack.c:363 fetch-pack.c:1370
+#: fetch-pack.c:364 fetch-pack.c:1414
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "geçersiz sığ olmayan satır: %s"
 
-#: fetch-pack.c:365 fetch-pack.c:1372
+#: fetch-pack.c:366 fetch-pack.c:1416
 #, c-format
 msgid "object not found: %s"
 msgstr "nesne bulunamadı: %s"
 
-#: fetch-pack.c:368 fetch-pack.c:1375
+#: fetch-pack.c:369 fetch-pack.c:1419
 #, c-format
 msgid "error in object: %s"
 msgstr "nesne içinde hata: %s"
 
-#: fetch-pack.c:370 fetch-pack.c:1377
+#: fetch-pack.c:371 fetch-pack.c:1421
 #, c-format
 msgid "no shallow found: %s"
 msgstr "sığ bulunamadı: %s"
 
-#: fetch-pack.c:373 fetch-pack.c:1381
+#: fetch-pack.c:374 fetch-pack.c:1425
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "sığ/sığ olmayan bekleniyordu, %s alındı"
 
-#: fetch-pack.c:415
+#: fetch-pack.c:416
 #, c-format
 msgid "got %s %d %s"
 msgstr "%s %d %s alındı"
 
-#: fetch-pack.c:432
+#: fetch-pack.c:433
 #, c-format
 msgid "invalid commit %s"
 msgstr "geçersiz gönderi %s"
 
-#: fetch-pack.c:463
+#: fetch-pack.c:464
 msgid "giving up"
 msgstr "vazgeçiliyor"
 
-#: fetch-pack.c:476 progress.c:336
+#: fetch-pack.c:477 progress.c:336
 msgid "done"
 msgstr "bitti"
 
-#: fetch-pack.c:488
+#: fetch-pack.c:489
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "%s (%d) %s alındı"
 
-#: fetch-pack.c:534
+#: fetch-pack.c:535
 #, c-format
 msgid "Marking %s as complete"
 msgstr "%s tamam olarak imleniyor"
 
-#: fetch-pack.c:755
+#: fetch-pack.c:756
 #, c-format
 msgid "already have %s (%s)"
 msgstr "%s halihazırda var (%s)"
 
-#: fetch-pack.c:819
+#: fetch-pack.c:821
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: yanbant çoğullama çözücüsü ayrı çatallanamıyor"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:829
 msgid "protocol error: bad pack header"
 msgstr "protokol hatası: hatalı paket üstbilgisi"
 
-#: fetch-pack.c:901
+#: fetch-pack.c:910
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: %s ayrı çatallanamıyor"
 
-#: fetch-pack.c:917
+#: fetch-pack.c:927
 #, c-format
 msgid "%s failed"
 msgstr "%s başarısız oldu"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:929
 msgid "error in sideband demultiplexer"
 msgstr "yanbant çoğullama çözücüsünde hata"
 
-#: fetch-pack.c:966
+#: fetch-pack.c:976
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Sunucu sürümü %.*s"
 
-#: fetch-pack.c:971 fetch-pack.c:977 fetch-pack.c:980 fetch-pack.c:986
-#: fetch-pack.c:990 fetch-pack.c:994 fetch-pack.c:998 fetch-pack.c:1002
-#: fetch-pack.c:1006 fetch-pack.c:1010 fetch-pack.c:1014 fetch-pack.c:1018
-#: fetch-pack.c:1024 fetch-pack.c:1030 fetch-pack.c:1035 fetch-pack.c:1040
+#: fetch-pack.c:981 fetch-pack.c:987 fetch-pack.c:990 fetch-pack.c:996
+#: fetch-pack.c:1000 fetch-pack.c:1004 fetch-pack.c:1008 fetch-pack.c:1012
+#: fetch-pack.c:1016 fetch-pack.c:1020 fetch-pack.c:1024 fetch-pack.c:1028
+#: fetch-pack.c:1034 fetch-pack.c:1040 fetch-pack.c:1045 fetch-pack.c:1050
 #, c-format
 msgid "Server supports %s"
 msgstr "Sunucu %s destekliyor"
 
-#: fetch-pack.c:973
+#: fetch-pack.c:983
 msgid "Server does not support shallow clients"
 msgstr "Sunucu sığ istemcileri desteklemiyor"
 
-#: fetch-pack.c:1033
+#: fetch-pack.c:1043
 msgid "Server does not support --shallow-since"
 msgstr "Sunucu --shallow-since desteklemiyor"
 
-#: fetch-pack.c:1038
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-exclude"
 msgstr "Sunucu --shallow-exclude desteklemiyor"
 
-#: fetch-pack.c:1042
+#: fetch-pack.c:1052
 msgid "Server does not support --deepen"
 msgstr "Sunucu --deepen desteklemiyor"
 
-#: fetch-pack.c:1059
+#: fetch-pack.c:1054
+msgid "Server does not support this repository's object format"
+msgstr "Sunucu bu deponun nesne türünü desteklemiyor"
+
+#: fetch-pack.c:1071
 msgid "no common commits"
 msgstr "ortak gönderi yok"
 
-#: fetch-pack.c:1071 fetch-pack.c:1563
+#: fetch-pack.c:1083 fetch-pack.c:1639
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: getirme başarısız"
 
 #: fetch-pack.c:1211
+#, c-format
+msgid "mismatched algorithms: client %s; server %s"
+msgstr "eşleşmeyen algoritmalar: istemci %s; sunucu %s"
+
+#: fetch-pack.c:1215
+#, c-format
+msgid "the server does not support algorithm '%s'"
+msgstr "sunucu '%s' algoritmasını desteklemiyor"
+
+#: fetch-pack.c:1235
 msgid "Server does not support shallow requests"
 msgstr "Sunucu sığ istekleri desteklemiyor"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1242
 msgid "Server supports filter"
 msgstr "Sunucu süzgeç destekliyor"
 
-#: fetch-pack.c:1242
+#: fetch-pack.c:1286
 msgid "unable to write request to remote"
 msgstr "uzak konuma istek yazılamıyor"
 
-#: fetch-pack.c:1260
+#: fetch-pack.c:1304
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "bölüm üstbilgisi '%s' okunurken hata"
 
-#: fetch-pack.c:1266
+#: fetch-pack.c:1310
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "'%s' bekleniyordu, '%s' alındı"
 
-#: fetch-pack.c:1327
+#: fetch-pack.c:1371
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "beklenmedik alındı satırı: '%s'"
 
-#: fetch-pack.c:1332
+#: fetch-pack.c:1376
 #, c-format
 msgid "error processing acks: %d"
 msgstr "alındılar işlenirken hata: %d"
 
-#: fetch-pack.c:1342
+#: fetch-pack.c:1386
 msgid "expected packfile to be sent after 'ready'"
 msgstr "paket dosyasının 'ready'den sonra gönderilmesi gerekiyordu"
 
-#: fetch-pack.c:1344
+#: fetch-pack.c:1388
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "'ready' \"yok\" iken başka hiçbir bölümün gönderilmemesi gerekiyordu"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1430
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "sığ bilgi işlenirken hata: %d"
 
-#: fetch-pack.c:1433
+#: fetch-pack.c:1477
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "wanted-ref bekleniyordu, '%s' alındı"
 
-#: fetch-pack.c:1438
+#: fetch-pack.c:1482
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "beklenmedik wanted-ref: '%s'"
 
-#: fetch-pack.c:1443
+#: fetch-pack.c:1487
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "aranan başvurular işlenirken hata: %d"
 
-#: fetch-pack.c:1789
+#: fetch-pack.c:1517
+msgid "git fetch-pack: expected response end packet"
+msgstr "git fetch-pack: yanıt sonu paketi bekleniyordu"
+
+#: fetch-pack.c:1921
 msgid "no matching remote head"
 msgstr "eşleşen uzak dal ucu yok"
 
-#: fetch-pack.c:1812 builtin/clone.c:692
+#: fetch-pack.c:1944 builtin/clone.c:692
 msgid "remote did not send all necessary objects"
 msgstr "uzak konum gereken tüm nesneleri göndermedi"
 
-#: fetch-pack.c:1839
+#: fetch-pack.c:1971
 #, c-format
 msgid "no such remote ref %s"
 msgstr "böyle bir uzak başvuru yok: %s"
 
-#: fetch-pack.c:1842
+#: fetch-pack.c:1974
 #, 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"
@@ -4141,7 +4200,7 @@
 msgid "'%s': unable to read %s"
 msgstr "'%s': %s okunamıyor"
 
-#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:82
+#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:89
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
@@ -4287,16 +4346,16 @@
 "\n"
 "Buna en yakın komutlar:"
 
-#: help.c:653
+#: help.c:654
 msgid "git version [<options>]"
 msgstr "git version [<seçenekler>]"
 
-#: help.c:708
+#: help.c:709
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:712
+#: help.c:713
 msgid ""
 "\n"
 "Did you mean this?"
@@ -4396,6 +4455,10 @@
 msgid "multiple filter-specs cannot be combined"
 msgstr "çoklu filter-specs birlikte kullanılamaz"
 
+#: list-objects-filter-options.c:330
+msgid "unable to upgrade repository format to support partial clone"
+msgstr "depo biçimi kısımsal klonları desteklemesi için yükseltilemiyor"
+
 #: list-objects-filter.c:492
 #, c-format
 msgid "unable to access sparse blob in '%s'"
@@ -4766,7 +4829,7 @@
 msgid "Skipped %s (merged same as existing)"
 msgstr "%s atlandı (mevcut ile aynı biçimde birleştirildi)"
 
-#: merge-recursive.c:3101 git-submodule.sh:985
+#: merge-recursive.c:3101 git-submodule.sh:959
 msgid "submodule"
 msgstr "altmodül"
 
@@ -4886,14 +4949,14 @@
 
 #: merge-recursive.c:3786 builtin/merge.c:705 builtin/merge.c:885
 msgid "Unable to write index."
-msgstr "İndeks yazılamadı."
+msgstr "İndeks yazılamıyor."
 
 #: merge.c:41
 msgid "failed to read the cache"
 msgstr "önbellek okunamadı"
 
 #: merge.c:108 rerere.c:720 builtin/am.c:1878 builtin/am.c:1912
-#: builtin/checkout.c:559 builtin/checkout.c:824 builtin/clone.c:816
+#: builtin/checkout.c:559 builtin/checkout.c:822 builtin/clone.c:816
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "yeni indeks dosyası yazılamıyor"
@@ -5141,21 +5204,21 @@
 msgid "hash mismatch %s"
 msgstr "sağlama uyuşmazlığı %s"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2135
+#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2184
 #, c-format
 msgid "unable to get size of %s"
 msgstr "%s boyutu alınamıyor"
 
-#: packfile.c:629
+#: packfile.c:630
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "ofset paket dosyasının sonundan önce (bozuk .idx?)"
 
-#: packfile.c:1899
+#: packfile.c:1900
 #, 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:1903
+#: packfile.c:1904
 #, 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?)"
@@ -5358,44 +5421,48 @@
 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"
+
+#: pkt-line.c:113
 msgid "flush packet write failed"
 msgstr "floş paketi yazımı başarısız"
 
-#: pkt-line.c:146 pkt-line.c:232
+#: pkt-line.c:153 pkt-line.c:239
 msgid "protocol error: impossibly long line"
 msgstr "protokol hatası: olanaksız uzun satır"
 
-#: pkt-line.c:162 pkt-line.c:164
+#: pkt-line.c:169 pkt-line.c:171
 msgid "packet write with format failed"
 msgstr "biçimlendirilmiş paket yazımı başarısız"
 
-#: pkt-line.c:196
+#: pkt-line.c:203
 msgid "packet write failed - data exceeds max packet size"
 msgstr "paket yazımı başarısız - veri olabilecek en çok paket boyutunu aşıyor"
 
-#: pkt-line.c:203 pkt-line.c:210
+#: pkt-line.c:210 pkt-line.c:217
 msgid "packet write failed"
 msgstr "paket yazımı başarısız"
 
-#: pkt-line.c:295
+#: pkt-line.c:302
 msgid "read error"
 msgstr "okuma hatası"
 
-#: pkt-line.c:303
+#: pkt-line.c:310
 msgid "the remote end hung up unexpectedly"
 msgstr "uzak konum beklenmedik bir biçimde hattı kapattı"
 
-#: pkt-line.c:331
+#: pkt-line.c:338
 #, c-format
 msgid "protocol error: bad line length character: %.4s"
 msgstr "protokol hatası: hatalı satır uzunluğu karakteri: %.4s"
 
-#: pkt-line.c:341 pkt-line.c:346
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
 msgid "protocol error: bad line length %d"
 msgstr "protokol hatası: hatalı satır uzunluğu %d"
 
-#: pkt-line.c:362
+#: pkt-line.c:373
 #, c-format
 msgid "remote error: %s"
 msgstr "uzak konum hatası: %s"
@@ -5573,7 +5640,7 @@
 
 #: read-cache.c:1983 read-cache.c:2271 rerere.c:565 rerere.c:599 rerere.c:1111
 #: submodule.c:1619 builtin/add.c:532 builtin/check-ignore.c:181
-#: builtin/checkout.c:488 builtin/checkout.c:676 builtin/clean.c:961
+#: builtin/checkout.c:488 builtin/checkout.c:674 builtin/clean.c:991
 #: builtin/commit.c:364 builtin/diff-tree.c:121 builtin/grep.c:507
 #: builtin/mv.c:145 builtin/reset.c:247 builtin/rm.c:290
 #: builtin/submodule--helper.c:332
@@ -5630,7 +5697,7 @@
 msgid "broken index, expect %s in %s, got %s"
 msgstr "bozuk indeks, %s bekleniyordu (%s içinde), %s alındı"
 
-#: read-cache.c:3026 strbuf.c:1176 wrapper.c:622 builtin/merge.c:1130
+#: read-cache.c:3026 strbuf.c:1171 wrapper.c:630 builtin/merge.c:1130
 #, c-format
 msgid "could not close '%s'"
 msgstr "'%s' kapatılamadı"
@@ -5814,7 +5881,7 @@
 msgid "could not read '%s'."
 msgstr "'%s' okunamadı."
 
-#: ref-filter.c:42 wt-status.c:1936
+#: ref-filter.c:42 wt-status.c:1977
 msgid "gone"
 msgstr "gitti"
 
@@ -6039,7 +6106,7 @@
 msgid "ignoring ref with broken name %s"
 msgstr "bozuk ada iye %s başvurusu yok sayılıyor"
 
-#: ref-filter.c:2095 refs.c:625
+#: ref-filter.c:2095 refs.c:657
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "bozuk başvuru %s yok sayılıyor"
@@ -6069,95 +6136,109 @@
 msgid "option `%s' must point to a commit"
 msgstr "'%s' bir gönderiye işaret etmeli"
 
-#: refs.c:262
+#: refs.c:264
 #, c-format
 msgid "%s does not point to a valid object!"
 msgstr "%s geçerli bir nesneye işaret etmiyor!"
 
-#: refs.c:623
+#: refs.c:572
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr "'%s' alınamadı"
+
+#: refs.c:579
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "geçersiz dal adı: %s = %s"
+
+#: refs.c:655
 #, c-format
 msgid "ignoring dangling symref %s"
 msgstr "sarkan sembolik başvuru %s yok sayılıyor"
 
-#: refs.c:760
+#: refs.c:792
 #, c-format
 msgid "could not open '%s' for writing: %s"
 msgstr "'%s' yazma için açılamadı: %s"
 
-#: refs.c:770 refs.c:821
+#: refs.c:802 refs.c:853
 #, c-format
 msgid "could not read ref '%s'"
 msgstr "'%s' başvurusu okunamadı"
 
-#: refs.c:776
+#: refs.c:808
 #, c-format
 msgid "ref '%s' already exists"
 msgstr "'%s' başvurusu halihazırda var"
 
-#: refs.c:781
+#: refs.c:813
 #, c-format
 msgid "unexpected object ID when writing '%s'"
 msgstr "'%s' yazılırken beklenmedik nesne numarası"
 
-#: refs.c:789 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
-#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1173
-#: wrapper.c:620
+#: refs.c:821 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
+#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1168
+#: wrapper.c:628
 #, c-format
 msgid "could not write to '%s'"
 msgstr "şuraya yazılamadı: '%s'"
 
-#: refs.c:816 strbuf.c:1171 wrapper.c:188 wrapper.c:358 builtin/am.c:719
+#: refs.c:848 strbuf.c:1166 wrapper.c:196 wrapper.c:366 builtin/am.c:719
 #: builtin/rebase.c:852
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "'%s' yazma için açılamadı"
 
-#: refs.c:823
+#: refs.c:855
 #, c-format
 msgid "unexpected object ID when deleting '%s'"
 msgstr "'%s' silinirken beklenmedik nesne numarası"
 
-#: refs.c:954
+#: refs.c:986
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr "%s başvurusu için olan günlükte %s sonrasında boşluk var"
 
-#: refs.c:960
+#: refs.c:992
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr ""
 "%s başvurusu için olan günlük %s konumunda beklenmedik bir biçimde sonlandı"
 
-#: refs.c:1019
+#: refs.c:1051
 #, c-format
 msgid "log for %s is empty"
 msgstr "%s için olan günlük boş"
 
-#: refs.c:1111
+#: refs.c:1143
 #, c-format
 msgid "refusing to update ref with bad name '%s'"
 msgstr "hatalı ada iye '%s' başvurusunu güncelleme reddediliyor"
 
-#: refs.c:1187
+#: refs.c:1219
 #, c-format
 msgid "update_ref failed for ref '%s': %s"
 msgstr "'%s' başvurusu için update_ref başarısız oldu: %s"
 
-#: refs.c:1979
+#: refs.c:2011
 #, c-format
 msgid "multiple updates for ref '%s' not allowed"
 msgstr "'%s' başvurusu için birden çok güncellemeye izin verilmiyor"
 
-#: refs.c:2011
+#: refs.c:2098
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "başvuru güncellemeleri karantina ortamı içinde yasak"
 
-#: refs.c:2107 refs.c:2137
+#: refs.c:2109
+msgid "ref updates aborted by hook"
+msgstr "başvuru güncellemeleri kanca tarafından iptal edildi"
+
+#: refs.c:2209 refs.c:2239
 #, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr "'%s' mevcut; '%s' oluşturulamıyor"
 
-#: refs.c:2113 refs.c:2148
+#: refs.c:2215 refs.c:2250
 #, c-format
 msgid "cannot process '%s' and '%s' at the same time"
 msgstr "'%s' ve '%s' aynı anda işlenemiyor"
@@ -6441,7 +6522,7 @@
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr "  (uzak dalı kendi dalınıza birleştirmek için \"git pull\" kullanın)\n"
 
-#: remote.c:2233
+#: remote.c:2241
 #, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr "beklenen nesne adı '%s' ayrıştırılamıyor"
@@ -6568,20 +6649,20 @@
 msgid "failed to find tree of %s"
 msgstr "%s ögesinin ağacı bulunamadı"
 
-#: revision.c:2655
+#: revision.c:2661
 msgid "your current branch appears to be broken"
 msgstr "geçerli dalınız bozuk gibi görünüyor"
 
-#: revision.c:2658
+#: revision.c:2664
 #, 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 gönderi yok"
 
-#: revision.c:2866
+#: revision.c:2873
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent, --bisect ile uyumsuz"
 
-#: revision.c:2870
+#: revision.c:2877
 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"
 
@@ -6621,11 +6702,15 @@
 msgid "failed to sign the push certificate"
 msgstr "itme sertifikası imzalanamadı"
 
-#: send-pack.c:399
+#: send-pack.c:394
+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:403
 msgid "the receiving end does not support --signed push"
 msgstr "alıcı uç --signed itmeyi desteklemiyor"
 
-#: send-pack.c:401
+#: send-pack.c:405
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -6633,11 +6718,11 @@
 "alıcı uç --signed itmeyi desteklemediğinden dolayı bir itme sertifikası "
 "gönderilmiyor"
 
-#: send-pack.c:413
+#: send-pack.c:417
 msgid "the receiving end does not support --atomic push"
 msgstr "alıcı uç --atomic itmeyi desteklemiyor"
 
-#: send-pack.c:418
+#: send-pack.c:422
 msgid "the receiving end does not support push options"
 msgstr "alıcı uç itme seçeneklerini desteklemiyor"
 
@@ -6758,7 +6843,7 @@
 msgid "unable to dequote value of '%s'"
 msgstr "'%s' ögesinin tırnakları kaldırılamıyor"
 
-#: sequencer.c:785 wrapper.c:190 wrapper.c:360 builtin/am.c:710
+#: sequencer.c:785 wrapper.c:198 wrapper.c:368 builtin/am.c:710
 #: builtin/am.c:802 builtin/merge.c:1125 builtin/rebase.c:896
 #, c-format
 msgid "could not open '%s' for reading"
@@ -7591,84 +7676,84 @@
 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:569
+#: setup.c:604
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Beklenen git repo sürümü <= %d, %d bulundu"
 
-#: setup.c:577
+#: setup.c:612
 msgid "unknown repository extensions found:"
 msgstr "bilinmeyen depo genişletmeleri bulundu:"
 
-#: setup.c:596
+#: setup.c:631
 #, c-format
 msgid "error opening '%s'"
 msgstr "'%s' açılırken hata"
 
-#: setup.c:598
+#: setup.c:633
 #, 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:600
+#: setup.c:635
 #, c-format
 msgid "error reading %s"
 msgstr "%s okunurken hata"
 
-#: setup.c:602
+#: setup.c:637
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "geçersiz gitfile biçimi: %s"
 
-#: setup.c:604
+#: setup.c:639
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "gitfile içinde yol yok: %s"
 
-#: setup.c:606
+#: setup.c:641
 #, c-format
 msgid "not a git repository: %s"
 msgstr "bir git deposu değil: %s"
 
-#: setup.c:708
+#: setup.c:743
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' çok büyük"
 
-#: setup.c:722
+#: setup.c:757
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "bir git deposu değil: '%s'"
 
-#: setup.c:751 setup.c:753 setup.c:784
+#: setup.c:786 setup.c:788 setup.c:819
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "'%s' konumuna chdir yapılamıyor"
 
-#: setup.c:756 setup.c:812 setup.c:822 setup.c:861 setup.c:869
+#: setup.c:791 setup.c:847 setup.c:857 setup.c:896 setup.c:904
 msgid "cannot come back to cwd"
 msgstr "cwd'ye geri dönülemiyor"
 
-#: setup.c:883
+#: setup.c:918
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "'%*s%s%s' bilgileri alınamadı"
 
-#: setup.c:1121
+#: setup.c:1156
 msgid "Unable to read current working directory"
 msgstr "Şu anki çalışma dizini okunamıyor"
 
-#: setup.c:1130 setup.c:1136
+#: setup.c:1165 setup.c:1171
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "şuraya değiştirilemiyor: '%s'"
 
-#: setup.c:1141
+#: setup.c:1176
 #, 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:1147
+#: setup.c:1182
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -7678,7 +7763,7 @@
 "Dosya sistemi sınırında duruluyor (GIT_DISCOVERY_ACROSS_FILESYSTEM "
 "ayarlanmamış)."
 
-#: setup.c:1258
+#: setup.c:1293
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -7687,15 +7772,15 @@
 "core.sharedRepository dosya kipi değeri ile sorun (0%.3o).\n"
 "Dosyaların sahibinin her zaman okuma ve yazma izni olması gerekir."
 
-#: setup.c:1304
+#: setup.c:1340
 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:1319
+#: setup.c:1355
 msgid "fork failed"
 msgstr "çatallama başarısız"
 
-#: setup.c:1324
+#: setup.c:1360
 msgid "setsid failed"
 msgstr "setsid başarısız"
 
@@ -7876,7 +7961,7 @@
 msgid "confused by unstable object source data for %s"
 msgstr "%s için olan nesne kaynak verisinden dolayı kafa karışıklığı"
 
-#: sha1-file.c:1906 builtin/pack-objects.c:1055
+#: sha1-file.c:1906 builtin/pack-objects.c:1085
 #, c-format
 msgid "failed utime() on %s"
 msgstr "%s üzerinde utime() başarısız"
@@ -8053,43 +8138,43 @@
 msgstr "geçersiz nesne adı: '%.*s'"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
-#: strbuf.c:853
+#: strbuf.c:848
 #, c-format
 msgid "%u.%2.2u GiB"
 msgstr "%u.%2.2u GiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
-#: strbuf.c:855
+#: strbuf.c:850
 #, c-format
 msgid "%u.%2.2u GiB/s"
 msgstr "%u.%2.2u GiB/sn"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte
-#: strbuf.c:863
+#: strbuf.c:858
 #, c-format
 msgid "%u.%2.2u MiB"
 msgstr "%u.%2.2u MiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
-#: strbuf.c:865
+#: strbuf.c:860
 #, c-format
 msgid "%u.%2.2u MiB/s"
 msgstr "%u.%2.2u MiB/sn"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte
-#: strbuf.c:872
+#: strbuf.c:867
 #, c-format
 msgid "%u.%2.2u KiB"
 msgstr "%u.%2.2u KiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
-#: strbuf.c:874
+#: strbuf.c:869
 #, c-format
 msgid "%u.%2.2u KiB/s"
 msgstr "%u.%2.2u KiB/sn"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte
-#: strbuf.c:880
+#: strbuf.c:875
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -8097,14 +8182,14 @@
 msgstr[1] "%u bayt"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte/second
-#: strbuf.c:882
+#: strbuf.c:877
 #, c-format
 msgid "%u byte/s"
 msgid_plural "%u bytes/s"
 msgstr[0] "%u bayt/sn"
 msgstr[1] "%u bayt/sn"
 
-#: strbuf.c:1180
+#: strbuf.c:1175
 #, c-format
 msgid "could not edit '%s'"
 msgstr "'%s' düzenlenemedi"
@@ -8340,7 +8425,7 @@
 #: trailer.c:730
 #, c-format
 msgid "empty trailer token in trailer '%.*s'"
-msgstr "'%.*s' artbilgisi içinde boş artbilgi simgesi"
+msgstr "'%.*s' artbilgisi içinde boş artbilgi jetonu"
 
 #: trailer.c:750
 #, c-format
@@ -8351,7 +8436,7 @@
 msgid "could not read from stdin"
 msgstr "stdin'den okunamadı"
 
-#: trailer.c:1011 wrapper.c:665
+#: trailer.c:1011 wrapper.c:673
 #, c-format
 msgid "could not stat %s"
 msgstr "%s dosya bilgileri alınamadı"
@@ -8375,20 +8460,20 @@
 msgid "could not rename temporary file to %s"
 msgstr "geçici dosya adı %s olarak değiştirilemedi"
 
-#: transport-helper.c:61 transport-helper.c:90
+#: transport-helper.c:62 transport-helper.c:91
 msgid "full write to remote helper failed"
 msgstr "uzak konum yardımcısına tam yazım başarısız"
 
-#: transport-helper.c:144
+#: transport-helper.c:145
 #, c-format
 msgid "unable to find remote helper for '%s'"
 msgstr "'%s' için uzak konum yardımcısı bulunamadı"
 
-#: transport-helper.c:160 transport-helper.c:571
+#: transport-helper.c:161 transport-helper.c:575
 msgid "can't dup helper output fd"
 msgstr "uzak konum yardımcısı çıktısı için dosya açıklayıcısı çoğaltılamıyor"
 
-#: transport-helper.c:211
+#: transport-helper.c:214
 #, c-format
 msgid ""
 "unknown mandatory capability %s; this remote helper probably needs newer "
@@ -8397,157 +8482,162 @@
 "bilinmeyen zorunlu %s yeteneği; bu uzak konum yardımcısı büyük olasılıkla "
 "Git'in daha yeni bir sürümüne gereksinim duyuyor"
 
-#: transport-helper.c:217
+#: transport-helper.c:220
 msgid "this remote helper should implement refspec capability"
 msgstr "bu uzak konum yardımcısı refspec yapabilirliğini yerine getirmeli"
 
-#: transport-helper.c:284 transport-helper.c:425
+#: transport-helper.c:287 transport-helper.c:429
 #, c-format
 msgid "%s unexpectedly said: '%s'"
 msgstr "%s beklenmedik bir biçimde şunu söyledi: '%s'"
 
-#: transport-helper.c:414
+#: transport-helper.c:417
 #, c-format
 msgid "%s also locked %s"
 msgstr "%s ayrıca şunu kilitledi: %s"
 
-#: transport-helper.c:493
+#: transport-helper.c:497
 msgid "couldn't run fast-import"
 msgstr "fast-import çalıştırılamadı"
 
-#: transport-helper.c:516
+#: transport-helper.c:520
 msgid "error while running fast-import"
 msgstr "fast-import çalıştırılırken hata"
 
-#: transport-helper.c:545 transport-helper.c:1135
+#: transport-helper.c:549 transport-helper.c:1156
 #, c-format
 msgid "could not read ref %s"
 msgstr "%s başvurusu okunamadı"
 
-#: transport-helper.c:590
+#: transport-helper.c:594
 #, c-format
 msgid "unknown response to connect: %s"
 msgstr "'connect'e bilinmeyen yanıt: %s"
 
-#: transport-helper.c:612
+#: transport-helper.c:616
 msgid "setting remote service path not supported by protocol"
 msgstr "uzak servis yolu ayarlama protokolce desteklenmiyor"
 
-#: transport-helper.c:614
+#: transport-helper.c:618
 msgid "invalid remote service path"
 msgstr "geçersiz uzak konum servis yolu"
 
-#: transport-helper.c:657 transport.c:1339
+#: transport-helper.c:661 transport.c:1347
 msgid "operation not supported by protocol"
 msgstr "işlem protokol tarafından desteklenmiyor"
 
-#: transport-helper.c:660
+#: transport-helper.c:664
 #, c-format
 msgid "can't connect to subservice %s"
 msgstr "%s altservisine bağlanamıyor"
 
-#: transport-helper.c:736
+#: transport-helper.c:740
 #, c-format
 msgid "expected ok/error, helper said '%s'"
 msgstr "tamam/hata bekleniyordu, yardımcı şunu söyledi: '%s'"
 
-#: transport-helper.c:789
+#: transport-helper.c:793
 #, c-format
 msgid "helper reported unexpected status of %s"
 msgstr "yardımcı %s beklenmedik durumu bildirdi"
 
-#: transport-helper.c:850
+#: transport-helper.c:854
 #, c-format
 msgid "helper %s does not support dry-run"
 msgstr "%s yardımcısı 'dry-run' desteklemiyor"
 
-#: transport-helper.c:853
+#: transport-helper.c:857
 #, c-format
 msgid "helper %s does not support --signed"
 msgstr "%s yardımcısı --signed desteklemiyor"
 
-#: transport-helper.c:856
+#: transport-helper.c:860
 #, c-format
 msgid "helper %s does not support --signed=if-asked"
 msgstr "%s yardımcısı --signed=if-asked desteklemiyor"
 
-#: transport-helper.c:861
+#: transport-helper.c:865
 #, c-format
 msgid "helper %s does not support --atomic"
 msgstr "%s yardımcısı --atomic desteklemiyor"
 
-#: transport-helper.c:867
+#: transport-helper.c:871
 #, c-format
 msgid "helper %s does not support 'push-option'"
 msgstr "%s yardımcısı 'push-option' desteklemiyor"
 
-#: transport-helper.c:966
+#: transport-helper.c:970
 msgid "remote-helper doesn't support push; refspec needed"
 msgstr "remote-helper itme desteklemiyor; başvuru belirteci gerekli"
 
-#: transport-helper.c:971
+#: transport-helper.c:975
 #, c-format
 msgid "helper %s does not support 'force'"
 msgstr "%s yardımcısı 'force' desteklemiyor"
 
-#: transport-helper.c:1018
+#: transport-helper.c:1022
 msgid "couldn't run fast-export"
 msgstr "fast-export çalıştırılamadı"
 
-#: transport-helper.c:1023
+#: transport-helper.c:1027
 msgid "error while running fast-export"
 msgstr "fast-export çalıştırılırken hata"
 
-#: transport-helper.c:1048
+#: transport-helper.c:1052
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
-"Perhaps you should specify a branch such as 'master'.\n"
+"Perhaps you should specify a branch.\n"
 msgstr ""
 "Ortak başvuru yok ve hiç belirtilmemiş; bir şey yapılmayacak.\n"
-"Belki de bir dal belirtmelisiniz, örneğin: 'master'.\n"
+"Belki de bir dal belirtmelisiniz.\n"
 
-#: transport-helper.c:1121
+#: transport-helper.c:1133
+#, c-format
+msgid "unsupported object format '%s'"
+msgstr "desteklenmeyen nesne biçimi '%s'"
+
+#: transport-helper.c:1142
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "başvuru listesinde hatalı oluşturulmuş yanıt: %s"
 
-#: transport-helper.c:1273
+#: transport-helper.c:1294
 #, c-format
 msgid "read(%s) failed"
 msgstr "read(%s) başarısız oldu"
 
-#: transport-helper.c:1300
+#: transport-helper.c:1321
 #, c-format
 msgid "write(%s) failed"
 msgstr "write(%s) başarısız oldu"
 
-#: transport-helper.c:1349
+#: transport-helper.c:1370
 #, c-format
 msgid "%s thread failed"
 msgstr "%s iş parçacığı başarısız oldu"
 
-#: transport-helper.c:1353
+#: transport-helper.c:1374
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "%s iş parçacığı eklenemedi: %s"
 
-#: transport-helper.c:1372 transport-helper.c:1376
+#: transport-helper.c:1393 transport-helper.c:1397
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "veri kopyalama için iş parçacığı başlatılamıyor: %s"
 
-#: transport-helper.c:1413
+#: transport-helper.c:1434
 #, c-format
 msgid "%s process failed to wait"
 msgstr "%s işlemi bekleyemedi"
 
-#: transport-helper.c:1417
+#: transport-helper.c:1438
 #, c-format
 msgid "%s process failed"
 msgstr "%s işlemi başarısız oldu"
 
-#: transport-helper.c:1435 transport-helper.c:1444
+#: transport-helper.c:1456 transport-helper.c:1465
 msgid "can't start thread for copying data"
 msgstr "veri kopyalama için iş parçacığı başlatılamıyor"
 
@@ -8561,33 +8651,33 @@
 msgid "could not read bundle '%s'"
 msgstr "'%s' demeti okunamadı"
 
-#: transport.c:214
+#: transport.c:220
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport: Geçersiz derinlik seçeneği '%s'"
 
-#: transport.c:266
+#: transport.c:272
 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:267
+#: transport.c:273
 msgid "server options require protocol version 2 or later"
 msgstr "sunucu seçenekleri protokol sürüm 2 veya sonrasını gerektirir"
 
-#: transport.c:632
+#: transport.c:631
 msgid "could not parse transport.color.* config"
 msgstr "transport.color.* yapılandırması ayrıştırılamadı"
 
-#: transport.c:705
+#: transport.c:704
 msgid "support for protocol v2 not implemented yet"
 msgstr "protokol v2 desteği henüz yerine getirilmedi"
 
-#: transport.c:839
+#: transport.c:838
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "'%s' yapılandırması için bilinmeyen değer: %s"
 
-#: transport.c:905
+#: transport.c:904
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "'%s' taşıyıcısına izin verilmiyor"
@@ -8596,7 +8686,7 @@
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync artık desteklenmiyor"
 
-#: transport.c:1052
+#: transport.c:1059
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -8605,7 +8695,7 @@
 "Aşağıdaki altmodül yolları başka hiçbir uzak konumda bulunamayan\n"
 "değişiklikler içeriyor:\n"
 
-#: transport.c:1056
+#: transport.c:1063
 #, c-format
 msgid ""
 "\n"
@@ -8632,11 +8722,11 @@
 "kullanın.\n"
 "\n"
 
-#: transport.c:1064
+#: transport.c:1071
 msgid "Aborting."
 msgstr "İptal ediliyor"
 
-#: transport.c:1209
+#: transport.c:1216
 msgid "failed to push all needed submodules"
 msgstr "gereken tüm altmodüller itilemedi"
 
@@ -8914,7 +9004,7 @@
 msgid "Updating index flags"
 msgstr "İndeks bayrakları güncelleniyor"
 
-#: upload-pack.c:1337
+#: upload-pack.c:1415
 msgid "expected flush after fetch arguments"
 msgstr "getir değişkenlerinden sonra floş bekleniyordu"
 
@@ -8951,47 +9041,47 @@
 msgid "Fetching objects"
 msgstr "Nesneler getiriliyor"
 
-#: worktree.c:262 builtin/am.c:2098
+#: worktree.c:248 builtin/am.c:2098
 #, c-format
 msgid "failed to read '%s'"
 msgstr "'%s' okunamadı"
 
-#: worktree.c:309
+#: worktree.c:295
 #, 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:320
+#: worktree.c:306
 #, 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:332
+#: worktree.c:318
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' mevcut değil"
 
-#: worktree.c:338
+#: worktree.c:324
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' bir .git dosyası değil, hata kodu %d"
 
-#: worktree.c:347
+#: worktree.c:333
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' şuna geri işaret etmiyor: '%s'"
 
-#: wrapper.c:186 wrapper.c:356
+#: wrapper.c:194 wrapper.c:364
 #, c-format
 msgid "could not open '%s' for reading and writing"
 msgstr "'%s' okuma ve yazma için açılamadı"
 
-#: wrapper.c:387 wrapper.c:588
+#: wrapper.c:395 wrapper.c:596
 #, c-format
 msgid "unable to access '%s'"
 msgstr "'%s' erişilemiyor"
 
-#: wrapper.c:596
+#: wrapper.c:604
 msgid "unable to get current working directory"
 msgstr "geçerli çalışma dizini alınamıyor"
 
@@ -9380,39 +9470,44 @@
 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:1692
+#: wt-status.c:1494
+#, 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:1733
 msgid "On branch "
 msgstr "Üzerinde bulunulan dal: "
 
-#: wt-status.c:1699
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "şunun üzerine etkileşimli yeniden temellendirme sürmekte: "
 
-#: wt-status.c:1701
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "şunun üzerine yeniden temellendirme sürmekte: "
 
-#: wt-status.c:1711
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Şu anda bir dal üzerinde değil."
 
-#: wt-status.c:1728
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "İlk gönderi"
 
-#: wt-status.c:1729
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "Henüz bir gönderi yok"
 
-#: wt-status.c:1743
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "İzlenmeyen dosyalar"
 
-#: wt-status.c:1745
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "Yok sayılan dosyalar"
 
-#: wt-status.c:1749
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9423,32 +9518,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:1755
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "İzlenmeyen dosyalar listelenmiyor%s"
 
-#: wt-status.c:1757
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (izlenmeyen dosyaları göstermek için -u seçeneğini kullanın)"
 
-#: wt-status.c:1763
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Değişiklik yok"
 
-#: wt-status.c:1768
+#: wt-status.c:1809
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 "Gönderiye eklenen değişiklik yok (\"git add\" ve/veya \"git commit -a\" "
 "kullanın)\n"
 
-#: wt-status.c:1771
+#: wt-status.c:1812
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "Gönderiye eklenen değişiklik yok\n"
 
-#: wt-status.c:1774
+#: wt-status.c:1815
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9457,65 +9552,65 @@
 "gönderiye bir şey eklenmedi ancak izlenmeyen dosyalar var (izlemek için\n"
 "\"git add\" kullanın)\n"
 
-#: wt-status.c:1777
+#: wt-status.c:1818
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "gönderiye bir şey eklenmedi ancak izlenmeyen dosyalar var\n"
 
-#: wt-status.c:1780
+#: wt-status.c:1821
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 "Gönderilecek bir şey yok (dosyalar oluşturun/kopyalayın ve izlemek için "
 "\"git add\" kullanın)\n"
 
-#: wt-status.c:1783 wt-status.c:1788
+#: wt-status.c:1824 wt-status.c:1829
 #, c-format
 msgid "nothing to commit\n"
 msgstr "Gönderilecek bir şey yok\n"
 
-#: wt-status.c:1786
+#: wt-status.c:1827
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 "Gönderilecek bir şey yok (izlenmeyen dosyaları göstermek için -u kullanın)\n"
 
-#: wt-status.c:1790
+#: wt-status.c:1831
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "Gönderilecek bir şey yok, çalışma ağacı temiz\n"
 
-#: wt-status.c:1903
+#: wt-status.c:1944
 msgid "No commits yet on "
 msgstr "Şurada henüz bir gönderi yok: "
 
-#: wt-status.c:1907
+#: wt-status.c:1948
 msgid "HEAD (no branch)"
 msgstr "HEAD (dal yok)"
 
-#: wt-status.c:1938
+#: wt-status.c:1979
 msgid "different"
 msgstr "değişik"
 
-#: wt-status.c:1940 wt-status.c:1948
+#: wt-status.c:1981 wt-status.c:1989
 msgid "behind "
 msgstr "şunun arkasında: "
 
-#: wt-status.c:1943 wt-status.c:1946
+#: wt-status.c:1984 wt-status.c:1987
 msgid "ahead "
 msgstr "şunun önünde: "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2468
+#: wt-status.c:2509
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "%s yapılamıyor: Hazırlanmamış değişiklikleriniz var."
 
-#: wt-status.c:2474
+#: wt-status.c:2515
 msgid "additionally, your index contains uncommitted changes."
 msgstr "Ek olarak, indeksiniz gönderilmemiş değişiklikler içeriyor."
 
-#: wt-status.c:2476
+#: wt-status.c:2517
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "%s yapılamıyor: İndeksiniz gönderilmemiş değişiklikler içeriyor."
@@ -9594,7 +9689,7 @@
 msgid "interactive picking"
 msgstr "etkileşimli seçim"
 
-#: builtin/add.c:326 builtin/checkout.c:1535 builtin/reset.c:308
+#: builtin/add.c:326 builtin/checkout.c:1533 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "parçaları etkileşimli olarak seç"
 
@@ -9725,12 +9820,12 @@
 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:501 builtin/checkout.c:1703 builtin/commit.c:351
+#: builtin/add.c:501 builtin/checkout.c:1701 builtin/commit.c:351
 #: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1506
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file yol belirteci değişkenleri ile uyumsuz"
 
-#: builtin/add.c:508 builtin/checkout.c:1715 builtin/commit.c:357
+#: builtin/add.c:508 builtin/checkout.c:1713 builtin/commit.c:357
 #: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1512
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul, --pathspec-from-file gerektiriyor"
@@ -9997,7 +10092,7 @@
 msgid "allow fall back on 3way merging if needed"
 msgstr "gerekirse 3 yönlü birleştirmeye geri çekilmeye izin ver"
 
-#: builtin/am.c:2218 builtin/init-db.c:541 builtin/prune-packed.c:16
+#: builtin/am.c:2218 builtin/init-db.c:559 builtin/prune-packed.c:16
 #: builtin/repack.c:306 builtin/stash.c:816
 msgid "be quiet"
 msgstr "sessiz ol"
@@ -10053,7 +10148,7 @@
 
 #: builtin/am.c:2262 builtin/branch.c:659 builtin/for-each-ref.c:38
 #: builtin/replace.c:556 builtin/tag.c:438 builtin/verify-tag.c:38
-#: bugreport.c:131
+#: bugreport.c:137
 msgid "format"
 msgstr "biçim"
 
@@ -10348,111 +10443,115 @@
 "'git bisect terms' için geçersiz değişken %s.\n"
 "Desteklenen seçenekler: --term-good|--term-old ve --term-bad|--term-new."
 
-#: builtin/bisect--helper.c:478
+#: builtin/bisect--helper.c:460 builtin/bisect--helper.c:473
+msgid "'' is not a valid term"
+msgstr "'' geçerli bir terim değil"
+
+#: builtin/bisect--helper.c:483
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "tanımlanamayan seçenek: '%s'"
 
-#: builtin/bisect--helper.c:482
+#: builtin/bisect--helper.c:487
 #, 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:514
+#: builtin/bisect--helper.c:519
 msgid "bad HEAD - I need a HEAD"
 msgstr "hatalı HEAD - Bana bir HEAD gerek"
 
-#: builtin/bisect--helper.c:529
+#: builtin/bisect--helper.c:534
 #, 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:550
+#: builtin/bisect--helper.c:555
 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:553
+#: builtin/bisect--helper.c:558
 msgid "bad HEAD - strange symbolic ref"
 msgstr "hatalı HEAD - tuhaf sembolik başvuru"
 
-#: builtin/bisect--helper.c:577
+#: builtin/bisect--helper.c:582
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "geçersiz başvuru: '%s'"
 
-#: builtin/bisect--helper.c:633
+#: builtin/bisect--helper.c:638
 msgid "perform 'git bisect next'"
 msgstr "'git bisect next' gerçekleştir"
 
-#: builtin/bisect--helper.c:635
+#: builtin/bisect--helper.c:640
 msgid "write the terms to .git/BISECT_TERMS"
 msgstr "terimleri .git/BISECT_TERMS konumuna yaz"
 
-#: builtin/bisect--helper.c:637
+#: builtin/bisect--helper.c:642
 msgid "cleanup the bisection state"
 msgstr "ikili arama durumunu temizle"
 
-#: builtin/bisect--helper.c:639
+#: builtin/bisect--helper.c:644
 msgid "check for expected revs"
 msgstr "beklenen başvurular için denetle"
 
-#: builtin/bisect--helper.c:641
+#: builtin/bisect--helper.c:646
 msgid "reset the bisection state"
 msgstr "ikili arama durumunu sıfırla"
 
-#: builtin/bisect--helper.c:643
+#: builtin/bisect--helper.c:648
 msgid "write out the bisection state in BISECT_LOG"
 msgstr "ikili arama durumunu BISECT_LOG içine yaz"
 
-#: builtin/bisect--helper.c:645
+#: builtin/bisect--helper.c:650
 msgid "check and set terms in a bisection state"
 msgstr "bir ikili arama durumundaki terimleri denetle ve ayarla"
 
-#: builtin/bisect--helper.c:647
+#: builtin/bisect--helper.c:652
 msgid "check whether bad or good terms exist"
 msgstr "iyi veya kötü terimlerin olup olmadığını denetle"
 
-#: builtin/bisect--helper.c:649
+#: builtin/bisect--helper.c:654
 msgid "print out the bisect terms"
 msgstr "ikili arama terimlerini yazdır"
 
-#: builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:656
 msgid "start the bisect session"
 msgstr "ikili arama oturumunu başlat"
 
-#: builtin/bisect--helper.c:653
+#: builtin/bisect--helper.c:658
 msgid "update BISECT_HEAD instead of checking out the current commit"
 msgstr "geçerli gönderiyi çıkış yapmak yerine BISECT_HEAD güncelle"
 
-#: builtin/bisect--helper.c:655
+#: builtin/bisect--helper.c:660
 msgid "no log for BISECT_WRITE"
 msgstr "BISECT_WRITE için günlük yok"
 
-#: builtin/bisect--helper.c:673
+#: builtin/bisect--helper.c:678
 msgid "--write-terms requires two arguments"
 msgstr "--write-terms iki değişken gerektiriyor"
 
-#: builtin/bisect--helper.c:677
+#: builtin/bisect--helper.c:682
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state bir değişken gerektirmiyor"
 
-#: builtin/bisect--helper.c:684
+#: builtin/bisect--helper.c:689
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset bir değişken veya gönderi gerektirmiyor"
 
-#: builtin/bisect--helper.c:688
+#: builtin/bisect--helper.c:693
 msgid "--bisect-write requires either 4 or 5 arguments"
 msgstr "--bisect-write 4 veya 5 değişken gerektiriyor"
 
-#: builtin/bisect--helper.c:694
+#: builtin/bisect--helper.c:699
 msgid "--check-and-set-terms requires 3 arguments"
 msgstr "--check-and-set-terms 3 değişken gerektiriyor"
 
-#: builtin/bisect--helper.c:700
+#: builtin/bisect--helper.c:705
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check 2 veya 3 değişken gerektiriyor"
 
-#: builtin/bisect--helper.c:706
+#: builtin/bisect--helper.c:711
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms 0 veya 1 değişken gerektiriyor"
 
@@ -10705,7 +10804,7 @@
 #: builtin/branch.c:240
 #, c-format
 msgid "Cannot delete branch '%s' checked out at '%s'"
-msgstr "Şurada çıkış yapılmış '%s' dalı silinemiyor: '%s'"
+msgstr "'%s' dalı silinemiyor, şurada çıkış yapılmış: '%s'"
 
 #: builtin/branch.c:255
 #, c-format
@@ -11052,19 +11151,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <dosya> [<başvuru-adı>...]"
 
-#: builtin/bundle.c:66 builtin/pack-objects.c:3376
+#: builtin/bundle.c:66 builtin/pack-objects.c:3448
 msgid "do not show progress meter"
 msgstr "ilerleme çubuğunu gösterme"
 
-#: builtin/bundle.c:68 builtin/pack-objects.c:3378
+#: builtin/bundle.c:68 builtin/pack-objects.c:3450
 msgid "show progress meter"
 msgstr "ilerleme çubuğunu göster"
 
-#: builtin/bundle.c:70 builtin/pack-objects.c:3380
+#: builtin/bundle.c:70 builtin/pack-objects.c:3452
 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:73 builtin/pack-objects.c:3383
+#: builtin/bundle.c:73 builtin/pack-objects.c:3455
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "ilerleme çubuğu gösterildiğinde --all-progress'e benzer"
 
@@ -11104,11 +11203,11 @@
 
 #: builtin/cat-file.c:599
 msgid ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 msgstr ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<biçim>] | --batch-check[=<biçim>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 
 #: builtin/cat-file.c:620
 msgid "only one batch option may be specified"
@@ -11142,7 +11241,7 @@
 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 git-submodule.sh:984
+#: builtin/cat-file.c:648 git-submodule.sh:958
 msgid "blob"
 msgstr "ikili nesne"
 
@@ -11203,8 +11302,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:1488 builtin/gc.c:537
-#: builtin/worktree.c:502
+#: builtin/check-ignore.c:21 builtin/checkout.c:1486 builtin/gc.c:537
+#: builtin/worktree.c:561
 msgid "suppress progress reporting"
 msgstr "ilerleme bildirimini gizle"
 
@@ -11296,7 +11395,7 @@
 #: builtin/checkout-index.c:178 builtin/column.c:31
 #: builtin/submodule--helper.c:1400 builtin/submodule--helper.c:1403
 #: builtin/submodule--helper.c:1411 builtin/submodule--helper.c:1909
-#: builtin/worktree.c:675
+#: builtin/worktree.c:754
 msgid "string"
 msgstr "dizi"
 
@@ -11411,11 +11510,11 @@
 msgid "path '%s' is unmerged"
 msgstr "'%s' yolu birleştirilmemiş"
 
-#: builtin/checkout.c:704
+#: builtin/checkout.c:702
 msgid "you need to resolve your current index first"
 msgstr "önce geçerli indeksinizi çözmelisiniz"
 
-#: builtin/checkout.c:758
+#: builtin/checkout.c:756
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11424,50 +11523,50 @@
 "aşağıdaki hazırlanmış değişiklikler içeren dosyalarla sürdürülemiyor:\n"
 "%s"
 
-#: builtin/checkout.c:861
+#: builtin/checkout.c:859
 #, 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:903
+#: builtin/checkout.c:901
 msgid "HEAD is now at"
 msgstr "HEAD konumu:"
 
-#: builtin/checkout.c:907 builtin/clone.c:720
+#: builtin/checkout.c:905 builtin/clone.c:720
 msgid "unable to update HEAD"
 msgstr "HEAD güncellenemiyor"
 
-#: builtin/checkout.c:911
+#: builtin/checkout.c:909
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "'%s' dalı sıfırlandı.\n"
 
-#: builtin/checkout.c:914
+#: builtin/checkout.c:912
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Halihazırda '%s' üzerinde\n"
 
-#: builtin/checkout.c:918
+#: builtin/checkout.c:916
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "'%s' dalına geçildi ve sıfırlandı.\n"
 
-#: builtin/checkout.c:920 builtin/checkout.c:1344
+#: builtin/checkout.c:918 builtin/checkout.c:1342
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Yeni '%s' dalına geçildi.\n"
 
-#: builtin/checkout.c:922
+#: builtin/checkout.c:920
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "'%s' dalına geçildi.\n"
 
-#: builtin/checkout.c:973
+#: builtin/checkout.c:971
 #, c-format
 msgid " ... and %d more.\n"
 msgstr "... ve %d daha.\n"
 
-#: builtin/checkout.c:979
+#: builtin/checkout.c:977
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11490,7 +11589,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:996
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11517,19 +11616,19 @@
 "\tgit branch <yeni-dal-adı> %s\n"
 "\n"
 
-#: builtin/checkout.c:1033
+#: builtin/checkout.c:1031
 msgid "internal error in revision walk"
 msgstr "revizyonlarda gezinirken iç hata"
 
-#: builtin/checkout.c:1037
+#: builtin/checkout.c:1035
 msgid "Previous HEAD position was"
 msgstr "Önceki HEAD konumu şuydu:"
 
-#: builtin/checkout.c:1077 builtin/checkout.c:1339
+#: builtin/checkout.c:1075 builtin/checkout.c:1337
 msgid "You are on a branch yet to be born"
 msgstr "Henüz doğmamış bir dal üzerindesiniz"
 
-#: builtin/checkout.c:1152
+#: builtin/checkout.c:1150
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11538,7 +11637,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:1159
+#: builtin/checkout.c:1157
 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"
@@ -11558,51 +11657,51 @@
 "isterseniz, örn. 'origin', yapılandırmanızda checkout.defaultsRemote=origin\n"
 "ayarını yapmayı düşünün."
 
-#: builtin/checkout.c:1169
+#: builtin/checkout.c:1167
 #, 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:1235
+#: builtin/checkout.c:1233
 msgid "only one reference expected"
 msgstr "yalnızca bir başvuru bekleniyordu"
 
-#: builtin/checkout.c:1252
+#: builtin/checkout.c:1250
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "yalnızca bir başvuru bekleniyordu, %d verildi"
 
-#: builtin/checkout.c:1298 builtin/worktree.c:283 builtin/worktree.c:451
+#: builtin/checkout.c:1296 builtin/worktree.c:342 builtin/worktree.c:510
 #, c-format
 msgid "invalid reference: %s"
 msgstr "geçersiz başvuru: %s"
 
-#: builtin/checkout.c:1311 builtin/checkout.c:1677
+#: builtin/checkout.c:1309 builtin/checkout.c:1675
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "başvuru bir ağaca değil: %s"
 
-#: builtin/checkout.c:1358
+#: builtin/checkout.c:1356
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "bir dal bekleniyordu, '%s' etiketi alındı"
 
-#: builtin/checkout.c:1360
+#: builtin/checkout.c:1358
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "bir dal bekleniyordu, '%s' uzak dal alındı"
 
-#: builtin/checkout.c:1361 builtin/checkout.c:1369
+#: builtin/checkout.c:1359 builtin/checkout.c:1367
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "bir dal bekleniyordu, '%s' alındı"
 
-#: builtin/checkout.c:1364
+#: builtin/checkout.c:1362
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "bir dal bekleniyordu, '%s' gönderisi alındı"
 
-#: builtin/checkout.c:1380
+#: builtin/checkout.c:1378
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11610,7 +11709,7 @@
 "Birleştirme yaparken dal değiştirilemiyor.\n"
 "\"git merge --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1384
+#: builtin/checkout.c:1382
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11618,7 +11717,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:1388
+#: builtin/checkout.c:1386
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11626,7 +11725,7 @@
 "Yeniden temellendirme yaparken dal değiştirilemiyor.\n"
 "\"git rebase --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1390
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11634,7 +11733,7 @@
 "Seç-al yaparken dal değiştirilemiyor.\n"
 "\"git cherry-pick --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1394
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11642,145 +11741,145 @@
 "Geri al yaparken dal değiştirilemiyor.\n"
 "\"git revert --quit\" veya \"git worktree add\" yapmayı düşünün."
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1398
 msgid "you are switching branch while bisecting"
 msgstr "ikili arama yaparken dal değiştiriyorsunuz"
 
-#: builtin/checkout.c:1407
+#: builtin/checkout.c:1405
 msgid "paths cannot be used with switching branches"
 msgstr "dal değiştirilirken yollar kullanılamaz"
 
-#: builtin/checkout.c:1410 builtin/checkout.c:1414 builtin/checkout.c:1418
+#: builtin/checkout.c:1408 builtin/checkout.c:1412 builtin/checkout.c:1416
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "dal değiştirilirken '%s' kullanılamaz"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1425 builtin/checkout.c:1428
-#: builtin/checkout.c:1433 builtin/checkout.c:1438
+#: builtin/checkout.c:1420 builtin/checkout.c:1423 builtin/checkout.c:1426
+#: builtin/checkout.c:1431 builtin/checkout.c:1436
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s', '%s' ile birlikte kullanılamaz"
 
-#: builtin/checkout.c:1435
+#: builtin/checkout.c:1433
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s', <başlama-noktası> alamaz"
 
-#: builtin/checkout.c:1443
+#: builtin/checkout.c:1441
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Dal gönderi olmayan '%s' ögesine değiştirilemez"
 
-#: builtin/checkout.c:1450
+#: builtin/checkout.c:1448
 msgid "missing branch or commit argument"
 msgstr "dal veya gönderi değişkeni eksik"
 
-#: builtin/checkout.c:1492 builtin/clone.c:91 builtin/commit-graph.c:80
-#: builtin/commit-graph.c:164 builtin/fetch.c:168 builtin/merge.c:288
+#: builtin/checkout.c:1490 builtin/clone.c:91 builtin/commit-graph.c:82
+#: builtin/commit-graph.c:189 builtin/fetch.c:168 builtin/merge.c:288
 #: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:561
 #: builtin/send-pack.c:173
 msgid "force progress reporting"
 msgstr "durum belirtmeyi zorla"
 
-#: builtin/checkout.c:1493
+#: builtin/checkout.c:1491
 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:1494 builtin/log.c:1709 parse-options.h:322
+#: builtin/checkout.c:1492 builtin/log.c:1709 parse-options.h:322
 msgid "style"
 msgstr "stil"
 
-#: builtin/checkout.c:1495
+#: builtin/checkout.c:1493
 msgid "conflict style (merge or diff3)"
 msgstr "çakışma stili (birleştirme veya diff3)"
 
-#: builtin/checkout.c:1507 builtin/worktree.c:499
+#: builtin/checkout.c:1505 builtin/worktree.c:558
 msgid "detach HEAD at named commit"
 msgstr "adı verilen gönderide HEAD'i ayır"
 
-#: builtin/checkout.c:1508
+#: builtin/checkout.c:1506
 msgid "set upstream info for new branch"
 msgstr "yeni dal için üstkaynak bilgisi ayarla"
 
-#: builtin/checkout.c:1510
+#: builtin/checkout.c:1508
 msgid "force checkout (throw away local modifications)"
 msgstr "zorla çıkış yap (yerel değişiklikleri çöpe at)"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new-branch"
 msgstr "yeni dal"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new unparented branch"
 msgstr "yeni üst ögesi olmayan dal"
 
-#: builtin/checkout.c:1514 builtin/merge.c:292
+#: builtin/checkout.c:1512 builtin/merge.c:292
 msgid "update ignored files (default)"
 msgstr "yok sayılan dosyaları güncelle (öntanımlı)"
 
-#: builtin/checkout.c:1517
+#: builtin/checkout.c:1515
 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:1530
+#: builtin/checkout.c:1528
 msgid "checkout our version for unmerged files"
 msgstr "birleştirilmeyen dosyalar için bizim sürümü çıkış yap"
 
-#: builtin/checkout.c:1533
+#: builtin/checkout.c:1531
 msgid "checkout their version for unmerged files"
 msgstr "birleştirilmeyen dosyalar için onların sürümünü çıkış yap"
 
-#: builtin/checkout.c:1537
+#: builtin/checkout.c:1535
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "yol belirteçlerini yalnızca aralıklı girdilere kısıtlama"
 
-#: builtin/checkout.c:1592
+#: builtin/checkout.c:1590
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c ve --orphan birlikte kullanılmaz"
 
-#: builtin/checkout.c:1596
+#: builtin/checkout.c:1594
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p ve --overlay birlikte kullanılmaz"
 
-#: builtin/checkout.c:1633
+#: builtin/checkout.c:1631
 msgid "--track needs a branch name"
 msgstr "--track için bir dal adı gerekli"
 
-#: builtin/checkout.c:1638
+#: builtin/checkout.c:1636
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "eksik dal adı; -%c deneyin"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "could not resolve %s"
 msgstr "%s çözülemedi"
 
-#: builtin/checkout.c:1686
+#: builtin/checkout.c:1684
 msgid "invalid path specification"
 msgstr "geçersiz yol belirtimi"
 
-#: builtin/checkout.c:1693
+#: builtin/checkout.c:1691
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "'%s' bir gönderi değil ve ondan bir '%s' dalı oluşturulamaz"
 
-#: builtin/checkout.c:1697
+#: builtin/checkout.c:1695
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach bir '%s' yol değişkeni almıyor"
 
-#: builtin/checkout.c:1706
+#: builtin/checkout.c:1704
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file, --detach ile uyumsuz"
 
-#: builtin/checkout.c:1709 builtin/reset.c:325 builtin/stash.c:1503
+#: builtin/checkout.c:1707 builtin/reset.c:325 builtin/stash.c:1503
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file, --patch ile uyumsuz"
 
-#: builtin/checkout.c:1720
+#: builtin/checkout.c:1718
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -11788,69 +11887,70 @@
 "git checkout: --ours/--theirs, --force ve --merge indeks çıkışı yapılırken\n"
 "birlikte kullanılamaz"
 
-#: builtin/checkout.c:1725
+#: builtin/checkout.c:1723
 msgid "you must specify path(s) to restore"
 msgstr "eski durumuna getirilecek yolları belirtmelisiniz"
 
-#: builtin/checkout.c:1751 builtin/checkout.c:1753 builtin/checkout.c:1802
-#: builtin/checkout.c:1804 builtin/clone.c:121 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/worktree.c:495 builtin/worktree.c:497
+#: builtin/checkout.c:1749 builtin/checkout.c:1751 builtin/checkout.c:1800
+#: builtin/checkout.c:1802 builtin/clone.c:121 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2295 builtin/worktree.c:554
+#: builtin/worktree.c:556
 msgid "branch"
 msgstr "dal"
 
-#: builtin/checkout.c:1752
+#: builtin/checkout.c:1750
 msgid "create and checkout a new branch"
 msgstr "yeni bir dal oluştur ve çıkış yap"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid "create/reset and checkout a branch"
 msgstr "bir dal oluştur/sıfırla ve çıkış yap"
 
-#: builtin/checkout.c:1755
+#: builtin/checkout.c:1753
 msgid "create reflog for new branch"
 msgstr "yeni dal için başvuru günlüğü oluştur"
 
-#: builtin/checkout.c:1757
+#: builtin/checkout.c:1755
 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:1758
+#: builtin/checkout.c:1756
 msgid "use overlay mode (default)"
 msgstr "yerpaylaşım kipini kullan (öntanımlı)"
 
-#: builtin/checkout.c:1803
+#: builtin/checkout.c:1801
 msgid "create and switch to a new branch"
 msgstr "yeni bir dal oluştur ve ona geç"
 
-#: builtin/checkout.c:1805
+#: builtin/checkout.c:1803
 msgid "create/reset and switch to a branch"
 msgstr "bir dal oluştur/sıfırla ve ona geç"
 
-#: builtin/checkout.c:1807
+#: builtin/checkout.c:1805
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "'git switch <böyle-bir-dal-yok>'a temkinli yaklaş"
 
-#: builtin/checkout.c:1809
+#: builtin/checkout.c:1807
 msgid "throw away local modifications"
 msgstr "yerel değişiklikleri çöpe at"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "which tree-ish to checkout from"
 msgstr "çıkış yapılacak ağacımsı"
 
-#: builtin/checkout.c:1845
+#: builtin/checkout.c:1843
 msgid "restore the index"
 msgstr "indeksi eski durumuna getir"
 
-#: builtin/checkout.c:1847
+#: builtin/checkout.c:1845
 msgid "restore the working tree (default)"
 msgstr "çalışma ağacını eski durumuna getir"
 
-#: builtin/checkout.c:1849
+#: builtin/checkout.c:1847
 msgid "ignore unmerged entries"
 msgstr "birleştirilmemiş girdileri yok say"
 
-#: builtin/checkout.c:1850
+#: builtin/checkout.c:1848
 msgid "use overlay mode"
 msgstr "yerpaylaşım kipini kullan"
 
@@ -12012,11 +12112,7 @@
 msgid "remove only ignored files"
 msgstr "yalnızca yok sayılan dosyaları kaldır"
 
-#: builtin/clean.c:931
-msgid "-x and -X cannot be used together"
-msgstr "-x ve -X birlikte kullanılamaz"
-
-#: builtin/clean.c:935
+#: builtin/clean.c:929
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -12024,7 +12120,7 @@
 "clean.requireForce 'true' olarak ayarlanmış ve ne -i, ne -n, ne de -f "
 "verilmiş; temizleme reddediliyor"
 
-#: builtin/clean.c:938
+#: builtin/clean.c:932
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -12032,6 +12128,10 @@
 "clean.requireForce öntanımlı olarak 'true' ve ne -i, ne -n, ne de -f "
 "verilmiş; temizleme reddediliyor"
 
+#: builtin/clean.c:944
+msgid "-x and -X cannot be used together"
+msgstr "-x ve -X birlikte kullanılamaz"
+
 #: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<seçenekler>] [--] <depo> [<dizin>]"
@@ -12040,7 +12140,7 @@
 msgid "don't create a checkout"
 msgstr "çıkış yapma!"
 
-#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:536
+#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:554
 msgid "create a bare repository"
 msgstr "çıplak bir depo oluştur"
 
@@ -12072,11 +12172,11 @@
 msgid "number of submodules cloned in parallel"
 msgstr "paralelde klonlanan altmodüllerin sayısı"
 
-#: builtin/clone.c:111 builtin/init-db.c:533
+#: builtin/clone.c:111 builtin/init-db.c:551
 msgid "template-directory"
 msgstr "şablon dizini"
 
-#: builtin/clone.c:112 builtin/init-db.c:534
+#: builtin/clone.c:112 builtin/init-db.c:552
 msgid "directory from which templates will be used"
 msgstr "şablonların kullanılacağı dizin"
 
@@ -12090,8 +12190,8 @@
 msgid "use --reference only while cloning"
 msgstr "--reference'ı yalnızca klonlarken kullan"
 
-#: builtin/clone.c:119 builtin/column.c:27 builtin/merge-file.c:46
-#: builtin/pack-objects.c:3442 builtin/repack.c:329
+#: builtin/clone.c:119 builtin/column.c:27 builtin/init-db.c:562
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3514 builtin/repack.c:329
 msgid "name"
 msgstr "ad"
 
@@ -12116,7 +12216,7 @@
 msgid "create a shallow clone of that depth"
 msgstr "verilen derinlikte sığ bir depo oluştur"
 
-#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3431
+#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3503
 #: builtin/pull.c:211
 msgid "time"
 msgstr "zaman"
@@ -12147,11 +12247,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "klonlanan altmodüller sığ olacak"
 
-#: builtin/clone.c:137 builtin/init-db.c:542
+#: builtin/clone.c:137 builtin/init-db.c:560
 msgid "gitdir"
 msgstr "git dizini"
 
-#: builtin/clone.c:138 builtin/init-db.c:543
+#: builtin/clone.c:138 builtin/init-db.c:561
 msgid "separate git dir from working tree"
 msgstr "git dizinini çalışma ağacından ayır"
 
@@ -12281,7 +12381,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "geçici alternatifler dosyasının bağlantısı kesilemiyor"
 
-#: builtin/clone.c:971 builtin/receive-pack.c:1972
+#: builtin/clone.c:971 builtin/receive-pack.c:1982
 msgid "Too many arguments."
 msgstr "Çok fazla değişken."
 
@@ -12298,85 +12398,85 @@
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare ve --separate-git-dir birbiriyle uyumsuz."
 
-#: builtin/clone.c:1004
+#: builtin/clone.c:1007
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "'%s' deposu mevcut değil"
 
-#: builtin/clone.c:1010 builtin/fetch.c:1789
+#: builtin/clone.c:1011 builtin/fetch.c:1794
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "%s derinliği pozitif bir sayı değil"
 
-#: builtin/clone.c:1020
+#: builtin/clone.c:1021
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "Hedef yolu '%s' halihazırda mevcut ve boş bir dizin değil."
 
-#: builtin/clone.c:1030
+#: builtin/clone.c:1033
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "Çalışma ağacı '%s' halihazırda mevcut."
 
-#: builtin/clone.c:1045 builtin/clone.c:1066 builtin/difftool.c:271
-#: builtin/log.c:1886 builtin/worktree.c:295 builtin/worktree.c:327
+#: builtin/clone.c:1048 builtin/clone.c:1069 builtin/difftool.c:271
+#: builtin/log.c:1886 builtin/worktree.c:354 builtin/worktree.c:386
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "şunun öncü dizinleri oluşturulamadı: '%s'"
 
-#: builtin/clone.c:1050
+#: builtin/clone.c:1053
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "'%s' çalışma ağacı dizini oluşturulamadı"
 
-#: builtin/clone.c:1070
+#: builtin/clone.c:1073
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "'%s' çıplak deposuna klonlanıyor...\n"
 
-#: builtin/clone.c:1072
+#: builtin/clone.c:1075
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Klonlama konumu: '%s'...\n"
 
-#: builtin/clone.c:1096
+#: builtin/clone.c:1099
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
 msgstr ""
 "clone --recursive hem --reference hem --reference-if-able ile uyumlu değil"
 
-#: builtin/clone.c:1160
+#: builtin/clone.c:1164
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth yerel klonlarda yok sayılır; yerine file:// kullanın."
 
-#: builtin/clone.c:1162
+#: builtin/clone.c:1166
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "--shallow-since yerel klonlarda yok sayılır; yerine file:// kullanın."
 
-#: builtin/clone.c:1164
+#: builtin/clone.c:1168
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-exclude yerel klonlarda yok sayılır; yerine file:// kullanın."
 
-#: builtin/clone.c:1166
+#: builtin/clone.c:1170
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--filter yerel klonlarda yok sayılır; yerine file:// kullanın."
 
-#: builtin/clone.c:1169
+#: builtin/clone.c:1173
 msgid "source repository is shallow, ignoring --local"
 msgstr "kaynak depo sığ, --local yok sayılıyor"
 
-#: builtin/clone.c:1174
+#: builtin/clone.c:1178
 msgid "--local is ignored"
 msgstr "--local yok sayıldı"
 
-#: builtin/clone.c:1249 builtin/clone.c:1257
+#: builtin/clone.c:1262 builtin/clone.c:1270
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "%s uzak dalı %s üstkaynağında bulunamadı"
 
-#: builtin/clone.c:1260
+#: builtin/clone.c:1273
 msgid "You appear to have cloned an empty repository."
 msgstr "Boş bir depoyu klonlamış görünüyorsunuz."
 
@@ -12412,13 +12512,13 @@
 msgid "--command must be the first argument"
 msgstr "--command ilk değişken olmalı"
 
-#: builtin/commit-graph.c:11 builtin/commit-graph.c:19
+#: builtin/commit-graph.c:13 builtin/commit-graph.c:21
 msgid ""
 "git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
 msgstr ""
 "git commit-graph verify [--object-dir <nsndzn>] [--shallow] [--[no-]progress]"
 
-#: builtin/commit-graph.c:12 builtin/commit-graph.c:24
+#: builtin/commit-graph.c:14 builtin/commit-graph.c:26
 msgid ""
 "git commit-graph write [--object-dir <objdir>] [--append] [--"
 "split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
@@ -12428,83 +12528,92 @@
 "split[=<strateji>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
 "paths] [--[no-]progress] <bölme seçenekleri>"
 
-#: builtin/commit-graph.c:60
+#: builtin/commit-graph.c:62
 #, c-format
 msgid "could not find object directory matching %s"
 msgstr "'%s' ile eşleşen nesne dizini bulunamadı"
 
-#: builtin/commit-graph.c:76 builtin/commit-graph.c:152
-#: builtin/commit-graph.c:257 builtin/fetch.c:180 builtin/log.c:1678
+#: builtin/commit-graph.c:78 builtin/commit-graph.c:177
+#: builtin/commit-graph.c:276 builtin/fetch.c:180 builtin/log.c:1678
 msgid "dir"
 msgstr "dizin"
 
-#: builtin/commit-graph.c:77 builtin/commit-graph.c:153
-#: builtin/commit-graph.c:258
+#: builtin/commit-graph.c:79 builtin/commit-graph.c:178
+#: builtin/commit-graph.c:277
 msgid "The object directory to store the graph"
 msgstr "Grafiğin depolanacağı nesne dizini"
 
-#: builtin/commit-graph.c:79
+#: builtin/commit-graph.c:81
 msgid "if the commit-graph is split, only verify the tip file"
 msgstr "commit-graph parçalara bölünmüşse yalnızca uç dosyayı doğrula"
 
-#: builtin/commit-graph.c:102
+#: builtin/commit-graph.c:104
 #, c-format
 msgid "Could not open commit-graph '%s'"
 msgstr "commit-graph '%s' açılamadı"
 
-#: builtin/commit-graph.c:136
+#: builtin/commit-graph.c:138
 #, c-format
 msgid "unrecognized --split argument, %s"
 msgstr "tanımlanamayan --split değişkeni, %s"
 
-#: builtin/commit-graph.c:155
+#: builtin/commit-graph.c:151
+#, c-format
+msgid "unexpected non-hex object ID: %s"
+msgstr "beklenmedik onaltılık olmayan nesne kimliği: %s"
+
+#: builtin/commit-graph.c:156
+#, c-format
+msgid "invalid object: %s"
+msgstr "geçersiz nesne: %s"
+
+#: builtin/commit-graph.c:180
 msgid "start walk at all refs"
 msgstr "tüm başvurularda gezinmeyi başlat"
 
-#: builtin/commit-graph.c:157
+#: builtin/commit-graph.c:182
 msgid "scan pack-indexes listed by stdin for commits"
 msgstr "stdin tarafından listelenen paket indekslerini tara"
 
-#: builtin/commit-graph.c:159
+#: builtin/commit-graph.c:184
 msgid "start walk at commits listed by stdin"
 msgstr "stdin tarafından listelenen tüm gönderilerde gezinmeyi başlat"
 
-#: builtin/commit-graph.c:161
+#: builtin/commit-graph.c:186
 msgid "include all commits already in the commit-graph file"
 msgstr "halihazırda commit-graph dosyasında bulunan tüm gönderileri içer"
 
-#: builtin/commit-graph.c:163
+#: builtin/commit-graph.c:188
 msgid "enable computation for changed paths"
 msgstr "değiştirilen yollar için hesaplamayı etkinleştir"
 
-#: builtin/commit-graph.c:166
+#: builtin/commit-graph.c:191
 msgid "allow writing an incremental commit-graph file"
 msgstr "artan bir commit-graph dosyasının yazımına izin ver"
 
-#: builtin/commit-graph.c:170
+#: builtin/commit-graph.c:195
 msgid "maximum number of commits in a non-base split commit-graph"
 msgstr ""
 "bir temel olmayan parçalara bölünmüş commit-graph içinde en çok olabilecek "
 "gönderi sayısı"
 
-#: builtin/commit-graph.c:172
+#: builtin/commit-graph.c:197
 msgid "maximum ratio between two levels of a split commit-graph"
 msgstr ""
 "bölünmüş bir commit-graph'ın iki düzeyi arasında olabilecek en büyük oran"
 
-#: builtin/commit-graph.c:174
+#: builtin/commit-graph.c:199
 msgid "only expire files older than a given date-time"
 msgstr "yalnızca verilen bir tarihten daha eski dosyaların hükmünü kaldır"
 
-#: builtin/commit-graph.c:190
+#: builtin/commit-graph.c:215
 msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
 msgstr ""
 "--reachable, --stdin-commits veya --stdin-packs'ten en çok birini kullan"
 
-#: builtin/commit-graph.c:229
-#, c-format
-msgid "unexpected non-hex object ID: %s"
-msgstr "beklenmedik onaltılık olmayan nesne kimliği: %s"
+#: builtin/commit-graph.c:245
+msgid "Collecting commits from input"
+msgstr "Girdiden gönderiler toplanıyor"
 
 #: builtin/commit-tree.c:18
 msgid ""
@@ -12910,7 +13019,7 @@
 msgstr "sürüm"
 
 #: builtin/commit.c:1376 builtin/commit.c:1535 builtin/push.c:549
-#: builtin/worktree.c:646
+#: builtin/worktree.c:722
 msgid "machine-readable output"
 msgstr "makine tarafından okunabilir çıktı"
 
@@ -12923,8 +13032,8 @@
 msgstr "girdileri NUL ile sonlandır"
 
 #: builtin/commit.c:1384 builtin/commit.c:1388 builtin/commit.c:1543
-#: builtin/fast-export.c:1153 builtin/fast-export.c:1156
-#: builtin/fast-export.c:1159 builtin/rebase.c:1392 parse-options.h:336
+#: builtin/fast-export.c:1199 builtin/fast-export.c:1202
+#: builtin/fast-export.c:1205 builtin/rebase.c:1392 parse-options.h:336
 msgid "mode"
 msgstr "kip"
 
@@ -13117,7 +13226,7 @@
 #: builtin/commit.c:1659
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
-msgstr "Gönderi iletisinin boş olması nedeniyle gönderi iptal ediliyor.\n"
+msgstr "Gönderi iletisi boş olduğundan gönderi iptal ediliyor.\n"
 
 #: builtin/commit.c:1664
 #, c-format
@@ -13619,35 +13728,45 @@
 msgid "--broken is incompatible with commit-ishes"
 msgstr "--broken, gönderimsilerle uyumsuz"
 
-#: builtin/diff.c:84
+#: builtin/diff.c:91
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s': Sıradan bir dosya veya sembolik bağ değil"
 
-#: builtin/diff.c:235
+#: builtin/diff.c:242
 #, c-format
 msgid "invalid option: %s"
 msgstr "geçersiz seçenek: %s"
 
-#: builtin/diff.c:350
+#: builtin/diff.c:359
+#, c-format
+msgid "%s...%s: no merge base"
+msgstr "%s...%s: birleştirme temeli yok"
+
+#: builtin/diff.c:469
 msgid "Not a git repository"
 msgstr "Bir git deposu değil"
 
-#: builtin/diff.c:394
+#: builtin/diff.c:514
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "geçersiz nesne '%s' verildi"
 
-#: builtin/diff.c:403
+#: builtin/diff.c:525
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "ikiden çok ikili nesne verildi: '%s'"
 
-#: builtin/diff.c:408
+#: builtin/diff.c:530
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "ele alınmayan nesne '%s' verildi"
 
+#: builtin/diff.c:564
+#, c-format
+msgid "%s...%s: multiple merge bases, using %s"
+msgstr "%s...%s: çoklu birleştirme temelleri, %s kullanılıyor"
+
 #: builtin/difftool.c:30
 msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
 msgstr "git difftool [<seçenekler>] [<gönderi> [<gönderi>]] [--] [<yol>...]"
@@ -13798,84 +13917,105 @@
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-opts]"
 
-#: builtin/fast-export.c:853
+#: builtin/fast-export.c:868
 msgid "Error: Cannot export nested tags unless --mark-tags is specified."
 msgstr ""
 "Hata: İç içe geçmiş etiketler --mark-tags belirtilmediği sürece dışa "
 "aktarılamaz."
 
-#: builtin/fast-export.c:1152
+#: builtin/fast-export.c:1178
+msgid "--anonymize-map token cannot be empty"
+msgstr "--anonymize-map jetonu boş olamaz"
+
+#: builtin/fast-export.c:1198
 msgid "show progress after <n> objects"
 msgstr "<n> nesneden sonra ilerlemeyi göster"
 
-#: builtin/fast-export.c:1154
+#: builtin/fast-export.c:1200
 msgid "select handling of signed tags"
 msgstr "imzalanan etiketlerin nasıl işleneceğini seçin"
 
-#: builtin/fast-export.c:1157
+#: builtin/fast-export.c:1203
 msgid "select handling of tags that tag filtered objects"
 msgstr "nesnelerce süzülen etiketlerin nasıl işleneceğini seçin"
 
-#: builtin/fast-export.c:1160
+#: builtin/fast-export.c:1206
 msgid "select handling of commit messages in an alternate encoding"
 msgstr "başka bir kodlamaya iye gönderi iletilerinin nasıl işleneceğini seçin"
 
-#: builtin/fast-export.c:1163
+#: builtin/fast-export.c:1209
 msgid "Dump marks to this file"
 msgstr "imleri bu dosyaya boşalt"
 
-#: builtin/fast-export.c:1165
+#: builtin/fast-export.c:1211
 msgid "Import marks from this file"
 msgstr "imleri bu dosyadan içe aktar"
 
-#: builtin/fast-export.c:1169
+#: builtin/fast-export.c:1215
 msgid "Import marks from this file if it exists"
 msgstr "eğer varsa bu dosyadan imleri içe aktar"
 
-#: builtin/fast-export.c:1171
+#: builtin/fast-export.c:1217
 msgid "Fake a tagger when tags lack one"
 msgstr "etiketlerin bir etiketleyicisi yoksa varmış gibi davran"
 
-#: builtin/fast-export.c:1173
+#: builtin/fast-export.c:1219
 msgid "Output full tree for each commit"
 msgstr "her gönderi için tüm ağacın çıktısını ver"
 
-#: builtin/fast-export.c:1175
+#: builtin/fast-export.c:1221
 msgid "Use the done feature to terminate the stream"
 msgstr "akışı sonlandırmak için 'done' özelliğini kullan"
 
-#: builtin/fast-export.c:1176
+#: builtin/fast-export.c:1222
 msgid "Skip output of blob data"
 msgstr "ikili nesne verisi çıktısını atla"
 
-#: builtin/fast-export.c:1177 builtin/log.c:1724
+#: builtin/fast-export.c:1223 builtin/log.c:1724
 msgid "refspec"
 msgstr "başvuru belirteci"
 
-#: builtin/fast-export.c:1178
+#: builtin/fast-export.c:1224
 msgid "Apply refspec to exported refs"
 msgstr "başvuru belirtecini dışa aktarılan başvurulara aktar"
 
-#: builtin/fast-export.c:1179
+#: builtin/fast-export.c:1225
 msgid "anonymize output"
 msgstr "çıktı kimliğini gizle"
 
-#: builtin/fast-export.c:1181
+#: builtin/fast-export.c:1226
+msgid "from:to"
+msgstr "kimden:kime"
+
+#: builtin/fast-export.c:1227
+msgid "convert <from> to <to> in anonymized output"
+msgstr "<kimden> ve <kime>'yi anonimleştirilmiş çıktıda dönüştür"
+
+#: builtin/fast-export.c:1230
 msgid "Reference parents which are not in fast-export stream by object id"
 msgstr "'fast-export' akışında olmayan üst ögelere nesne numarası ile başvur"
 
-#: builtin/fast-export.c:1183
+#: builtin/fast-export.c:1232
 msgid "Show original object ids of blobs/commits"
 msgstr "ikili nesnelerin/gönderilerin orijinal nesne numaralarını göster"
 
-#: builtin/fast-export.c:1185
+#: builtin/fast-export.c:1234
 msgid "Label tags with mark ids"
 msgstr "etiketleri im numaralarıyla adlandır"
 
-#: builtin/fast-export.c:1220
+#: builtin/fast-export.c:1257
+msgid "--anonymize-map without --anonymize does not make sense"
+msgstr "--anonymize-map, --anonymize olmadan bir anlam ifade etmiyor"
+
+#: builtin/fast-export.c:1272
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
 msgstr "Hem --import-marks ve hem --import-marks-if-exists aktarılamadı"
 
+#: builtin/fetch-pack.c:245
+#, c-format
+msgid "Lockfile created but not reported: %s"
+msgstr "Kilit dosyası oluşturuldu ancak raporlanmadı: %s"
+
 #: builtin/fetch.c:35
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<seçenekler>] [<depo> [<bşvr-blrtç>...]]"
@@ -14200,41 +14340,41 @@
 msgid "You need to specify a tag name."
 msgstr "Bir etiket adı belirtmeniz gerekiyor."
 
-#: builtin/fetch.c:1773
+#: builtin/fetch.c:1778
 msgid "Negative depth in --deepen is not supported"
 msgstr "--deepen için negatif derinlik desteklenmiyor"
 
-#: builtin/fetch.c:1775
+#: builtin/fetch.c:1780
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen ve --depth birlikte kullanılamaz"
 
-#: builtin/fetch.c:1780
+#: builtin/fetch.c:1785
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth ve --unshallow birlikte kullanılamaz"
 
-#: builtin/fetch.c:1782
+#: builtin/fetch.c:1787
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "tam bir depo üzerinde --unshallow bir anlam ifade etmiyor"
 
-#: builtin/fetch.c:1798
+#: builtin/fetch.c:1800
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all bir depo değişkeni almıyor"
 
-#: builtin/fetch.c:1800
+#: builtin/fetch.c:1802
 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:1809
+#: builtin/fetch.c:1811
 #, 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:1816
+#: builtin/fetch.c:1818
 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:1834
+#: builtin/fetch.c:1836
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14687,8 +14827,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1730
-#: builtin/pack-objects.c:2855
+#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1727
+#: builtin/pack-objects.c:2904
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "iş parçacığı desteği yok, %s yok sayılıyor"
@@ -14918,11 +15058,11 @@
 msgid "invalid option combination, ignoring --threads"
 msgstr "geçersiz seçenek birleştirmesi, --threads yok sayılıyor"
 
-#: builtin/grep.c:1084 builtin/pack-objects.c:3548
+#: builtin/grep.c:1084 builtin/pack-objects.c:3623
 msgid "no threads support, ignoring --threads"
 msgstr "iş parçacığı desteği yok, --threads yok sayılıyor"
 
-#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2852
+#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2901
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "geçersiz belirtilen iş parçacığı sayısı (%d)"
@@ -15125,7 +15265,7 @@
 msgid "used more bytes than were available"
 msgstr "kullanılabilir olandan daha çok bayt kullanıldı"
 
-#: builtin/index-pack.c:288 builtin/pack-objects.c:607
+#: builtin/index-pack.c:288 builtin/pack-objects.c:618
 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"
 
@@ -15196,8 +15336,8 @@
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "%s İLE SHA1 ÇARPIŞMASI BULUNDU!"
 
-#: builtin/index-pack.c:738 builtin/pack-objects.c:159
-#: builtin/pack-objects.c:219 builtin/pack-objects.c:314
+#: builtin/index-pack.c:738 builtin/pack-objects.c:170
+#: builtin/pack-objects.c:230 builtin/pack-objects.c:325
 #, c-format
 msgid "unable to read %s"
 msgstr "%s okunamıyor"
@@ -15258,7 +15398,7 @@
 msgid "Resolving deltas"
 msgstr "Deltalar çözülüyor"
 
-#: builtin/index-pack.c:1208 builtin/pack-objects.c:2616
+#: builtin/index-pack.c:1208 builtin/pack-objects.c:2665
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "iş parçacığı oluşturulamadı: %s"
@@ -15323,58 +15463,67 @@
 msgid "cannot store index file"
 msgstr "indeks dosyası depolanamıyor"
 
-#: builtin/index-pack.c:1528 builtin/pack-objects.c:2863
+#: builtin/index-pack.c:1528 builtin/pack-objects.c:2912
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "hatalı pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1596
+#: builtin/index-pack.c:1592
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Mevcut paket dosyası '%s' açılamıyor"
 
-#: builtin/index-pack.c:1598
+#: builtin/index-pack.c:1594
 #, 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:1646
+#: builtin/index-pack.c:1642
 #, 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:1653
+#: builtin/index-pack.c:1649
 #, 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:1692
+#: builtin/index-pack.c:1689
 msgid "Cannot come back to cwd"
 msgstr "Şu anki çalışma dizinine geri gelinemiyor"
 
-#: builtin/index-pack.c:1741 builtin/index-pack.c:1744
-#: builtin/index-pack.c:1760 builtin/index-pack.c:1764
+#: builtin/index-pack.c:1738 builtin/index-pack.c:1741
+#: builtin/index-pack.c:1757 builtin/index-pack.c:1761
 #, c-format
 msgid "bad %s"
 msgstr "hatalı %s"
 
-#: builtin/index-pack.c:1780
+#: builtin/index-pack.c:1767 builtin/init-db.c:392 builtin/init-db.c:621
+#, c-format
+msgid "unknown hash algorithm '%s'"
+msgstr "bilinmeyen sağlama algoritması '%s'"
+
+#: builtin/index-pack.c:1782
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin, --stdin olmadan kullanılamaz"
 
-#: builtin/index-pack.c:1782
+#: builtin/index-pack.c:1784
 msgid "--stdin requires a git repository"
 msgstr "--stdin bir git dizini gerektirir"
 
-#: builtin/index-pack.c:1788
+#: builtin/index-pack.c:1786
+msgid "--object-format cannot be used with --stdin"
+msgstr "--object-format, --stdin olmadan kullanılamaz"
+
+#: builtin/index-pack.c:1792
 msgid "--verify with no packfile name given"
 msgstr "--verify ile bir paket dosyası adı verilmedi"
 
-#: builtin/index-pack.c:1836 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1840 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "paket nesnelerinde fsck hatası"
 
@@ -15418,51 +15567,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "şablonlar '%s' konumundan kopyalanmıyor: %s"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:276
+#, c-format
+msgid "invalid initial branch name: '%s'"
+msgstr "geçersiz başlangıç dalı adı: '%s'"
+
+#: builtin/init-db.c:368
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "%d dosya türü işlenemiyor"
 
-#: builtin/init-db.c:359
+#: builtin/init-db.c:371
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "%s şuraya taşınamıyor: %s"
 
-#: builtin/init-db.c:374
+#: builtin/init-db.c:386
 msgid "attempt to reinitialize repository with different hash"
 msgstr "depoyu başka bir sağlama ile yeniden ilklendirme deneniyor"
 
-#: builtin/init-db.c:380 builtin/init-db.c:601
-#, c-format
-msgid "unknown hash algorithm '%s'"
-msgstr "bilinmeyen sağlama algoritması '%s'"
-
-#: builtin/init-db.c:397 builtin/init-db.c:400
+#: builtin/init-db.c:410 builtin/init-db.c:413
 #, c-format
 msgid "%s already exists"
 msgstr "%s halihazırda var"
 
-#: builtin/init-db.c:458
+#: builtin/init-db.c:444
+#, c-format
+msgid "re-init: ignored --initial-branch=%s"
+msgstr "re-init: --initial-branch=%s yok sayıldı"
+
+#: builtin/init-db.c:475
 #, 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:459
+#: builtin/init-db.c:476
 #, 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:463
+#: builtin/init-db.c:480
 #, 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:464
+#: builtin/init-db.c:481
 #, 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:513
+#: builtin/init-db.c:530
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -15470,33 +15624,37 @@
 "git init [-q | --quiet] [--bare] [--template=<şablon-dizini>] [--"
 "shared[=<izinler>]] [<dizin>]"
 
-#: builtin/init-db.c:538
+#: builtin/init-db.c:556
 msgid "permissions"
 msgstr "izinler"
 
-#: builtin/init-db.c:539
+#: builtin/init-db.c:557
 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:544
+#: builtin/init-db.c:563
+msgid "override the name of the initial branch"
+msgstr "başlangıç dalının adını geçersiz kıl"
+
+#: builtin/init-db.c:564
 msgid "hash"
 msgstr "sağlama"
 
-#: builtin/init-db.c:545
+#: builtin/init-db.c:565 builtin/show-index.c:22
 msgid "specify the hash algorithm to use"
 msgstr "kullanılacak sağlama algoritmasını belirle"
 
-#: builtin/init-db.c:578 builtin/init-db.c:583
+#: builtin/init-db.c:598 builtin/init-db.c:603
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "%s mkdir yapılamıyor"
 
-#: builtin/init-db.c:587
+#: builtin/init-db.c:607
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "%s ögesine chdir yapılamıyor"
 
-#: builtin/init-db.c:614
+#: builtin/init-db.c:634
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -15505,7 +15663,7 @@
 "%s (veya --work-tree=<dizin>), %s (veya --git-dir=<dizin>) belirlenmeden "
 "izin verilmiyor"
 
-#: builtin/init-db.c:642
+#: builtin/init-db.c:662
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "'%s' çalışma ağacına erişilemiyor"
@@ -15516,7 +15674,7 @@
 "<token>[(=|:)<value>])...] [<file>...]"
 msgstr ""
 "git interpret-trailers [--in-place] [--trim-empty] [(--trailer "
-"<token>[(=|:)<değer>])...] [<dosya>...]"
+"<jeton>[(=|:)<değer>])...] [<dosya>...]"
 
 #: builtin/interpret-trailers.c:95
 msgid "edit files in place"
@@ -17249,7 +17407,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:164
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
 msgid "do not remove, show only"
 msgstr "kaldırma, yalnızca göster"
 
@@ -17283,103 +17441,119 @@
 msgstr ""
 "git pack-objects [<sçnklr>...] <base-name> [< <bşvr-liste> | < <nesne-liste>]"
 
-#: builtin/pack-objects.c:431
+#: builtin/pack-objects.c:442
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "%s için hatalı paketlenmiş nesne CRC'si"
 
-#: builtin/pack-objects.c:442
+#: builtin/pack-objects.c:453
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "%s için hasar görmüş paketlenmiş nesne"
 
-#: builtin/pack-objects.c:573
+#: builtin/pack-objects.c:584
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "%s nesnesi için özyineli delta algılandı"
 
-#: builtin/pack-objects.c:784
+#: builtin/pack-objects.c:795
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "%u nesne sipariş verildi, %<PRIu32> bekleniyordu"
 
-#: builtin/pack-objects.c:973
+#: builtin/pack-objects.c:1003
 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:986
+#: builtin/pack-objects.c:1016
 msgid "Writing objects"
 msgstr "Nesneler yazılıyor"
 
-#: builtin/pack-objects.c:1047 builtin/update-index.c:90
+#: builtin/pack-objects.c:1077 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "%s bilgileri alınamıyor"
 
-#: builtin/pack-objects.c:1100
+#: builtin/pack-objects.c:1130
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "%<PRIu32> nesne yazıldı (%<PRIu32> bekleniyordu)"
 
-#: builtin/pack-objects.c:1298
+#: builtin/pack-objects.c:1347
 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:1725
+#: builtin/pack-objects.c:1774
 #, 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:1734
+#: builtin/pack-objects.c:1783
 #, 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:2005
+#: builtin/pack-objects.c:2054
 msgid "Counting objects"
 msgstr "Nesneler sayılıyor"
 
-#: builtin/pack-objects.c:2150
+#: builtin/pack-objects.c:2199
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "%s nesne üstbilgisi ayrıştırılamıyor"
 
-#: builtin/pack-objects.c:2220 builtin/pack-objects.c:2236
-#: builtin/pack-objects.c:2246
+#: builtin/pack-objects.c:2269 builtin/pack-objects.c:2285
+#: builtin/pack-objects.c:2295
 #, c-format
 msgid "object %s cannot be read"
 msgstr "%s nesnesi okunamıyor"
 
-#: builtin/pack-objects.c:2223 builtin/pack-objects.c:2250
+#: builtin/pack-objects.c:2272 builtin/pack-objects.c:2299
 #, 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:2260
+#: builtin/pack-objects.c:2309
 msgid "suboptimal pack - out of memory"
 msgstr "standart altı paket - bellek yetersiz"
 
-#: builtin/pack-objects.c:2575
+#: builtin/pack-objects.c:2624
 #, 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:2714
+#: builtin/pack-objects.c:2763
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "%s etiketinden ulaşılabilir nesneler paketlenemiyor"
 
-#: builtin/pack-objects.c:2802
+#: builtin/pack-objects.c:2851
 msgid "Compressing objects"
 msgstr "Nesneler sıkıştırılıyor"
 
-#: builtin/pack-objects.c:2808
+#: builtin/pack-objects.c:2857
 msgid "inconsistency with delta count"
 msgstr "delta sayımında tutarsızlık"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2929
+#, c-format
+msgid ""
+"value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
+"hash> <uri>' (got '%s')"
+msgstr "uploadpack.blobpackfileuri değeri '<nesne-sağlaması> <paket-sağlaması> "
+"<uri> biçiminde olmalıdır ('%s' alındı)"
+
+#: builtin/pack-objects.c:2932
+#, c-format
+msgid ""
+"object already configured in another uploadpack.blobpackfileuri (got '%s')"
+msgstr ""
+"nesne halihazırda başka bir uploadpack.blobpackfileuri içinde yapılandırıldı "
+"('%s' alındı)"
+
+#: builtin/pack-objects.c:2961
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -17388,7 +17562,7 @@
 "sınır nesnesi numarası bekleniyordu, anlamsız veri alındı:\n"
 " %s"
 
-#: builtin/pack-objects.c:2895
+#: builtin/pack-objects.c:2967
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -17397,227 +17571,237 @@
 "nesne numarası bekleniyordu, anlamsız veri alındı:\n"
 "%s"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3065
 msgid "invalid value for --missing"
 msgstr "--missing için geçersiz değer"
 
-#: builtin/pack-objects.c:3052 builtin/pack-objects.c:3160
+#: builtin/pack-objects.c:3124 builtin/pack-objects.c:3232
 msgid "cannot open pack index"
 msgstr "paket indeksi açılamıyor"
 
-#: builtin/pack-objects.c:3083
+#: builtin/pack-objects.c:3155
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "%s konumundaki gevşek nesne incelenemedi"
 
-#: builtin/pack-objects.c:3168
+#: builtin/pack-objects.c:3240
 msgid "unable to force loose object"
 msgstr "gevşek nesne zorlanamıyor"
 
-#: builtin/pack-objects.c:3261
+#: builtin/pack-objects.c:3333
 #, c-format
 msgid "not a rev '%s'"
 msgstr "bir revizyon değil: '%s'"
 
-#: builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3336
 #, c-format
 msgid "bad revision '%s'"
 msgstr "hatalı revizyon: '%s'"
 
-#: builtin/pack-objects.c:3289
+#: builtin/pack-objects.c:3361
 msgid "unable to add recent objects"
 msgstr "en son nesneler eklenemiyor"
 
-#: builtin/pack-objects.c:3342
+#: builtin/pack-objects.c:3414
 #, c-format
 msgid "unsupported index version %s"
 msgstr "desteklenmeyen indeks sürümü %s"
 
-#: builtin/pack-objects.c:3346
+#: builtin/pack-objects.c:3418
 #, c-format
 msgid "bad index version '%s'"
 msgstr "hatalı indeks sürümü '%s'"
 
-#: builtin/pack-objects.c:3384
+#: builtin/pack-objects.c:3456
 msgid "<version>[,<offset>]"
 msgstr "<sürüm>[,<ofset>]"
 
-#: builtin/pack-objects.c:3385
+#: builtin/pack-objects.c:3457
 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:3388
+#: builtin/pack-objects.c:3460
 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:3390
+#: builtin/pack-objects.c:3462
 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:3392
+#: builtin/pack-objects.c:3464
 msgid "ignore packed objects"
 msgstr "paketlenmiş nesneleri yok say"
 
-#: builtin/pack-objects.c:3394
+#: builtin/pack-objects.c:3466
 msgid "limit pack window by objects"
 msgstr "paket penceresini nesnelerle sınırla"
 
-#: builtin/pack-objects.c:3396
+#: builtin/pack-objects.c:3468
 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:3398
+#: builtin/pack-objects.c:3470
 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:3400
+#: builtin/pack-objects.c:3472
 msgid "reuse existing deltas"
 msgstr "var olan deltaları yeniden kullan"
 
-#: builtin/pack-objects.c:3402
+#: builtin/pack-objects.c:3474
 msgid "reuse existing objects"
 msgstr "var olan nesneleri yeniden kullan"
 
-#: builtin/pack-objects.c:3404
+#: builtin/pack-objects.c:3476
 msgid "use OFS_DELTA objects"
 msgstr "OFS_DELTA nesneleri kullan"
 
-#: builtin/pack-objects.c:3406
+#: builtin/pack-objects.c:3478
 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:3408
+#: builtin/pack-objects.c:3480
 msgid "do not create an empty pack output"
 msgstr "boş bir paket çıktısı oluşturma"
 
-#: builtin/pack-objects.c:3410
+#: builtin/pack-objects.c:3482
 msgid "read revision arguments from standard input"
 msgstr "revizyon değişkenlerini standart girdi'den oku"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3484
 msgid "limit the objects to those that are not yet packed"
 msgstr "nesneleri henüz paketlenmeyenlere kısıtla"
 
-#: builtin/pack-objects.c:3415
+#: builtin/pack-objects.c:3487
 msgid "include objects reachable from any reference"
 msgstr "herhangi bir başvurudan ulaşılabilir olan nesneleri içer"
 
-#: builtin/pack-objects.c:3418
+#: builtin/pack-objects.c:3490
 msgid "include objects referred by reflog entries"
 msgstr "başvuru günlüğü tarafından başvurulan nesneleri içer"
 
-#: builtin/pack-objects.c:3421
+#: builtin/pack-objects.c:3493
 msgid "include objects referred to by the index"
 msgstr "indeks tarafından başvurulan nesneleri içer"
 
-#: builtin/pack-objects.c:3424
+#: builtin/pack-objects.c:3496
 msgid "output pack to stdout"
 msgstr "paketi stdout'a çıktı ver"
 
-#: builtin/pack-objects.c:3426
+#: builtin/pack-objects.c:3498
 msgid "include tag objects that refer to objects to be packed"
 msgstr "paketlenecek nesnelere başvuran etiket nesnelerini içer"
 
-#: builtin/pack-objects.c:3428
+#: builtin/pack-objects.c:3500
 msgid "keep unreachable objects"
 msgstr "ulaşılamayan nesneleri tut"
 
-#: builtin/pack-objects.c:3430
+#: builtin/pack-objects.c:3502
 msgid "pack loose unreachable objects"
 msgstr "ulaşılamayan gevşek nesneleri paketle"
 
-#: builtin/pack-objects.c:3432
+#: builtin/pack-objects.c:3504
 msgid "unpack unreachable objects newer than <time>"
 msgstr "<zaman>'dan daha yeni ulaşılamayan nesneleri aç"
 
-#: builtin/pack-objects.c:3435
+#: builtin/pack-objects.c:3507
 msgid "use the sparse reachability algorithm"
 msgstr "aralıklı ulaşılabilirlik algoritmasını kullan"
 
-#: builtin/pack-objects.c:3437
+#: builtin/pack-objects.c:3509
 msgid "create thin packs"
 msgstr "ince paketler oluştur"
 
-#: builtin/pack-objects.c:3439
+#: builtin/pack-objects.c:3511
 msgid "create packs suitable for shallow fetches"
 msgstr "sığ getirmelere uygun paketler oluştur"
 
-#: builtin/pack-objects.c:3441
+#: builtin/pack-objects.c:3513
 msgid "ignore packs that have companion .keep file"
 msgstr "eşlik eden .keep dosyasına iye paketleri yok say"
 
-#: builtin/pack-objects.c:3443
+#: builtin/pack-objects.c:3515
 msgid "ignore this pack"
 msgstr "bu paketi yok say"
 
-#: builtin/pack-objects.c:3445
+#: builtin/pack-objects.c:3517
 msgid "pack compression level"
 msgstr "paket sıkıştırma düzeyi"
 
-#: builtin/pack-objects.c:3447
+#: builtin/pack-objects.c:3519
 msgid "do not hide commits by grafts"
 msgstr "aşılarla gelen gönderileri gizleme"
 
-#: builtin/pack-objects.c:3449
+#: builtin/pack-objects.c:3521
 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:3451
+#: builtin/pack-objects.c:3523
 msgid "write a bitmap index together with the pack index"
 msgstr "paket indeksiyle birlikte bir biteşlem indeksi de yaz"
 
-#: builtin/pack-objects.c:3455
+#: builtin/pack-objects.c:3527
 msgid "write a bitmap index if possible"
 msgstr "eğer olanaklıysa bir biteşlem indeksi yaz"
 
-#: builtin/pack-objects.c:3459
+#: builtin/pack-objects.c:3531
 msgid "handling for missing objects"
 msgstr "eksik nesneler için işlem"
 
-#: builtin/pack-objects.c:3462
+#: builtin/pack-objects.c:3534
 msgid "do not pack objects in promisor packfiles"
 msgstr "nesneleri vaatçi paket dosyalarıyla paketleme"
 
-#: builtin/pack-objects.c:3464
+#: builtin/pack-objects.c:3536
 msgid "respect islands during delta compression"
 msgstr "delta sıkıştırması sırasında adalara uy"
 
-#: builtin/pack-objects.c:3493
+#: builtin/pack-objects.c:3538
+msgid "protocol"
+msgstr "protokol"
+
+#: builtin/pack-objects.c:3539
+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:3568
 #, 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:3498
+#: builtin/pack-objects.c:3573
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit çok yüksek, %d zorlanıyor"
 
-#: builtin/pack-objects.c:3552
+#: builtin/pack-objects.c:3627
 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:3554
+#: builtin/pack-objects.c:3629
 msgid "minimum pack size limit is 1 MiB"
 msgstr "olabilecek en küçük paket boyutu limiti 1 MiB'dır"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3634
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin bir indekslenebilir paket yapımında kullanılamaz"
 
-#: builtin/pack-objects.c:3562
+#: builtin/pack-objects.c:3637
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable ve --unpack-unreachable birbiriyle uyumsuz"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3643
 msgid "cannot use --filter without --stdout"
 msgstr "--filter, --stdout olmadan kullanılamaz"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3703
 msgid "Enumerating objects"
 msgstr "Nesneler ortaya dökülüyor"
 
-#: builtin/pack-objects.c:3658
+#: builtin/pack-objects.c:3734
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -17829,7 +18013,7 @@
 
 #: builtin/pull.c:959
 msgid "pull with rebase"
-msgstr "yeniden temellendirme ile çek"
+msgstr "yeniden temellendirme ile çekim"
 
 #: builtin/pull.c:960
 msgid "please commit or stash them."
@@ -18917,7 +19101,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <git-dizini>"
 
-#: builtin/receive-pack.c:843
+#: builtin/receive-pack.c:844
 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"
@@ -18946,7 +19130,7 @@
 "denyCurrentBranch'\n"
 "yapılandırma değişkenini 'refuse' olarak ayarlayın."
 
-#: builtin/receive-pack.c:863
+#: builtin/receive-pack.c:864
 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"
@@ -18966,11 +19150,11 @@
 "değişkenini 'warn' veya 'ignore' olarak ayarlayabilirsiniz.\n"
 "Bu iletiyi susturmak için onu 'refuse' olarak ayarlayın."
 
-#: builtin/receive-pack.c:1960
+#: builtin/receive-pack.c:1970
 msgid "quiet"
 msgstr "sessiz"
 
-#: builtin/receive-pack.c:1974
+#: builtin/receive-pack.c:1984
 msgid "You must specify a directory."
 msgstr "Bir dizin belirtmelisiniz."
 
@@ -20526,6 +20710,14 @@
 msgid "cannot find commit %s (%s)"
 msgstr "%s gönderisi bulunamıyor (%s)"
 
+#: builtin/show-index.c:21
+msgid "hash-algorithm"
+msgstr "sağlama algoritması"
+
+#: builtin/show-index.c:31
+msgid "Unknown hash algorithm"
+msgstr "bilinmeyen sağlama algoritması '%s'"
+
 #: builtin/show-ref.c:12
 msgid ""
 "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
@@ -20579,50 +20771,54 @@
 msgstr ""
 "bu çalışma ağacı aralıklı değil (sparse-checkout dosyası var olmayabilir)"
 
-#: builtin/sparse-checkout.c:212
+#: builtin/sparse-checkout.c:216
 msgid "failed to create directory for sparse-checkout file"
 msgstr "aralıklı çıkış dosyası için dizin oluşturulamadı"
 
-#: builtin/sparse-checkout.c:253
+#: builtin/sparse-checkout.c:257
+msgid "unable to upgrade repository format to enable worktreeConfig"
+msgstr "depo biçimi worktreeConfig etkinleştirmesi için yükseltilemiyor"
+
+#: builtin/sparse-checkout.c:259
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "extensions.worktreeConfig yapılandırması ayarlanamadı"
 
-#: builtin/sparse-checkout.c:270
+#: builtin/sparse-checkout.c:276
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:289
+#: builtin/sparse-checkout.c:295
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "aralıklı çıkışı koni kipinde ilklendir"
 
-#: builtin/sparse-checkout.c:326
+#: builtin/sparse-checkout.c:332
 #, c-format
 msgid "failed to open '%s'"
 msgstr "'%s' açılamadı"
 
-#: builtin/sparse-checkout.c:383
+#: builtin/sparse-checkout.c:389
 #, c-format
 msgid "could not normalize path %s"
 msgstr "'%s' yolu olağanlaştırılamadı"
 
-#: builtin/sparse-checkout.c:395
+#: builtin/sparse-checkout.c:401
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <dizgiler>)"
 
-#: builtin/sparse-checkout.c:420
+#: builtin/sparse-checkout.c:426
 #, 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:474 builtin/sparse-checkout.c:498
+#: builtin/sparse-checkout.c:480 builtin/sparse-checkout.c:504
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "mevcut aralıklı çıkış dizgileri yüklenemiyor"
 
-#: builtin/sparse-checkout.c:543
+#: builtin/sparse-checkout.c:549
 msgid "read patterns from standard in"
 msgstr "dizgileri stdin'den oku"
 
-#: builtin/sparse-checkout.c:580
+#: builtin/sparse-checkout.c:586
 msgid "error while refreshing working directory"
 msgstr "çalışma dizini yenilenirken hata"
 
@@ -21319,12 +21515,37 @@
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <yol> <yeniurl>"
 
-#: builtin/submodule--helper.c:2323 git.c:436 git.c:683
+#: builtin/submodule--helper.c:2294
+msgid "set the default tracking branch to master"
+msgstr "öntanımlı izleme dalını master olarak ayarla"
+
+#: builtin/submodule--helper.c:2296
+msgid "set the default tracking branch"
+msgstr "öntanımlı izleme dalını ayarla"
+
+#: builtin/submodule--helper.c:2300
+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:2301
+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:2308
+msgid "--branch or --default required"
+msgstr "--branch veya --default gerekli"
+
+#: builtin/submodule--helper.c:2311
+msgid "--branch and --default are mutually exclusive"
+msgstr "--branch ve --default birlikte kullanılamaz"
+
+#: builtin/submodule--helper.c:2367 git.c:436 git.c:683
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s, --super-prefix desteklemiyor"
 
-#: builtin/submodule--helper.c:2329
+#: builtin/submodule--helper.c:2373
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' geçerli bir submodule-helper altkomutu değil"
@@ -21955,198 +22176,188 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <yol>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:894
+#: builtin/worktree.c:60 builtin/worktree.c:972
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "'%s' silinemedi"
 
-#: builtin/worktree.c:79
-#, c-format
-msgid "Removing worktrees/%s: not a valid directory"
-msgstr "çalışma-ağacı/%s kaldırılıyor: geçerli bir dizin değil"
-
 #: builtin/worktree.c:85
-#, c-format
-msgid "Removing worktrees/%s: gitdir file does not exist"
-msgstr "çalışma-ağacı/%s kaldırılıyor: gitdir dosyası yok"
+msgid "not a valid directory"
+msgstr "geçerli bir dizin değil"
 
-#: builtin/worktree.c:90 builtin/worktree.c:99
-#, c-format
-msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
-msgstr "çalışma-ağacı/%s kaldırılıyor: gitdir dosyası okunamıyor (%s)"
+#: builtin/worktree.c:91
+msgid "gitdir file does not exist"
+msgstr "gitdir dosyası mevcut değil"
 
-#: builtin/worktree.c:109
+#: builtin/worktree.c:96 builtin/worktree.c:105
 #, c-format
-msgid ""
-"Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
-"%<PRIuMAX>)"
-msgstr ""
-"çalışma-ağacı/%s kaldırılıyor: yetersiz veri (%<PRIuMAX> bayt bekleniyordu, "
-"%<PRIuMAX> okundu"
+msgid "unable to read gitdir file (%s)"
+msgstr "gitdir dosyası (%s) okunamıyor"
 
-#: builtin/worktree.c:117
+#: builtin/worktree.c:115
 #, c-format
-msgid "Removing worktrees/%s: invalid gitdir file"
-msgstr "çalışma-ağacı/%s kaldırılıyor: geçersiz gitdir dosyası"
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "az okundu (%<PRIuMAX> bayt bekleniyordu, %<PRIuMAX> okundu)"
 
-#: builtin/worktree.c:126
+#: builtin/worktree.c:123
+msgid "invalid gitdir file"
+msgstr "geçersiz gitdir dosyası"
+
+#: builtin/worktree.c:131
+msgid "gitdir file points to non-existent location"
+msgstr "gitdir dosyası var olmayan bir konuma işaret ediyor"
+
+#: builtin/worktree.c:146
 #, c-format
-msgid "Removing worktrees/%s: gitdir file points to non-existent location"
-msgstr ""
-"çalışma-ağacı/%s kaldırılıyor: gitdir dosyası olmayan bir konuma işaret "
-"ediyor"
+msgid "Removing %s/%s: %s"
+msgstr "%s/%s kaldırılıyor: %s"
 
-#: builtin/worktree.c:165
+#: builtin/worktree.c:221
 msgid "report pruned working trees"
 msgstr "budanan çalışma ağaçlarını bildir"
 
-#: builtin/worktree.c:167
+#: builtin/worktree.c:223
 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:234
+#: builtin/worktree.c:293
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' halihazırda var"
 
-#: builtin/worktree.c:244
+#: builtin/worktree.c:302
 #, c-format
-msgid "unable to re-add worktree '%s'"
-msgstr "'%s' çalışma ağacı yeniden eklenemiyor"
+msgid "unusable worktree destination '%s'"
+msgstr "kullanılamayan çalışma ağacı konumu '%s'"
 
-#: builtin/worktree.c:249
+#: builtin/worktree.c:307
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
-"use 'add -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
+"use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
 "'%s' eksik ancak kilitli bir çalışma ağacı;\n"
-"geçersiz kılmak için 'add -f -f', temizlemek için 'unlock', 'prune' veya "
+"geçersiz kılmak için '%s -f -f', temizlemek için 'unlock', 'prune' veya "
 "'remove' kullanın"
 
-#: builtin/worktree.c:251
+#: builtin/worktree.c:309
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
-"use 'add -f' to override, or 'prune' or 'remove' to clear"
+"use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
 "'%s' eksik ancak halihazırda kaydı yapılmış bir çalışma ağacı;\n"
-"geçersiz kılmak için 'add -f', temizlemek için 'prune' veya 'remove' kullanın"
+"geçersiz kılmak için '%s -f', temizlemek için 'prune' veya 'remove' kullanın"
 
-#: builtin/worktree.c:301
+#: builtin/worktree.c:360
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "'%s' dizini oluşturulamadı"
 
-#: builtin/worktree.c:435 builtin/worktree.c:441
+#: builtin/worktree.c:494 builtin/worktree.c:500
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "Çalışma ağacı hazırlanıyor (yeni dal '%s')"
 
-#: builtin/worktree.c:437
+#: builtin/worktree.c:496
 #, 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:446
+#: builtin/worktree.c:505
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "Çalışma ağacı hazırlanıyor ('%s' çıkış yapılıyor)"
 
-#: builtin/worktree.c:452
+#: builtin/worktree.c:511
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "Çalışma ağacı hazırlanıyor (ayrık HEAD %s)"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:552
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr "diğer çalışma ağacında çıkış yapılmış olsa bile <dal> çıkışını yap"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:555
 msgid "create a new branch"
 msgstr "yeni bir dal oluştur"
 
-#: builtin/worktree.c:498
+#: builtin/worktree.c:557
 msgid "create or reset a branch"
 msgstr "yeni bir dal oluştur veya sıfırla"
 
-#: builtin/worktree.c:500
+#: builtin/worktree.c:559
 msgid "populate the new working tree"
 msgstr "yeni çalışma ağacını doldur"
 
-#: builtin/worktree.c:501
+#: builtin/worktree.c:560
 msgid "keep the new working tree locked"
 msgstr "yeni çalışma ağacını kilitli tut"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:563
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "izleme kipini ayarla (bkz: git-branch(1))"
 
-#: builtin/worktree.c:507
+#: builtin/worktree.c:566
 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:515
+#: builtin/worktree.c:574
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B ve --detach birlikte kullanılamaz"
 
-#: builtin/worktree.c:576
+#: builtin/worktree.c:635
 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:676
+#: builtin/worktree.c:755
 msgid "reason for locking"
 msgstr "kilitleme nedeni"
 
-#: builtin/worktree.c:688 builtin/worktree.c:721 builtin/worktree.c:795
-#: builtin/worktree.c:922
+#: builtin/worktree.c:767 builtin/worktree.c:800 builtin/worktree.c:874
+#: builtin/worktree.c:1000
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' bir çalışma ağacı değil"
 
-#: builtin/worktree.c:690 builtin/worktree.c:723
+#: builtin/worktree.c:769 builtin/worktree.c:802
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Ana çalışma ağacı kilitlenemez veya kilidi açılamaz"
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:774
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' halihazırda kilitli, nedeni: %s"
 
-#: builtin/worktree.c:697
+#: builtin/worktree.c:776
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' halihazırda kilitli"
 
-#: builtin/worktree.c:725
+#: builtin/worktree.c:804
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' kilitli değil"
 
-#: builtin/worktree.c:766
+#: builtin/worktree.c:845
 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:774
+#: builtin/worktree.c:853
 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:797 builtin/worktree.c:924
+#: builtin/worktree.c:876 builtin/worktree.c:1002
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' bir ana çalışma ağacı"
 
-#: builtin/worktree.c:802
+#: builtin/worktree.c:881
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "hedef adı şuradan anlaşılamadı: '%s'"
 
-#: builtin/worktree.c:808
-#, c-format
-msgid "target '%s' already exists"
-msgstr "'%s' hedefi halihazırda var"
-
-#: builtin/worktree.c:816
+#: builtin/worktree.c:894
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -22155,7 +22366,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:818
+#: builtin/worktree.c:896
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -22163,38 +22374,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:821
+#: builtin/worktree.c:899
 #, 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:826
+#: builtin/worktree.c:904
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "'%s' -> '%s' taşıması başarısız"
 
-#: builtin/worktree.c:874
+#: builtin/worktree.c:952
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "'%s' üzerinde 'git status' çalıştırılamadı"
 
-#: builtin/worktree.c:878
+#: builtin/worktree.c:956
 #, 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:883
+#: builtin/worktree.c:961
 #, 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:906
+#: builtin/worktree.c:984
 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:929
+#: builtin/worktree.c:1007
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -22203,7 +22414,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:931
+#: builtin/worktree.c:1009
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -22211,7 +22422,7 @@
 "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:934
+#: builtin/worktree.c:1012
 #, 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"
@@ -22232,32 +22443,32 @@
 msgid "only useful for debugging"
 msgstr "yalnızca hata ayıklama için yararlı"
 
-#: bugreport.c:14
+#: bugreport.c:15
 msgid "git version:\n"
 msgstr "git sürümü:\n"
 
-#: bugreport.c:20
+#: bugreport.c:21
 #, c-format
 msgid "uname() failed with error '%s' (%d)\n"
 msgstr "uname() '%s' hatasını verip çıktı (%d)\n"
 
-#: bugreport.c:30
+#: bugreport.c:31
 msgid "compiler info: "
 msgstr "derleyici bilgisi: "
 
-#: bugreport.c:32
+#: bugreport.c:34
 msgid "libc info: "
 msgstr "libc bilgisi: "
 
-#: bugreport.c:74
+#: bugreport.c:80
 msgid "not run from a git repository - no hooks to show\n"
 msgstr "bir git deposundan çalıştırılmadı - gösterilecek kanca yok\n"
 
-#: bugreport.c:84
+#: bugreport.c:90
 msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
 msgstr "git bugreport [-o|--output-directory <dosya>] [-s|--suffix <biçim>]"
 
-#: bugreport.c:91
+#: bugreport.c:97
 msgid ""
 "Thank you for filling out a Git bug report!\n"
 "Please answer the following questions to help us understand your issue.\n"
@@ -22292,66 +22503,76 @@
 "Aşağıda hata raporunun geri kalanına bir göz atın.\n"
 "Paylaşmak istemediğiniz satırları silebilirsiniz.\n"
 
-#: bugreport.c:130
+#: bugreport.c:136
 msgid "specify a destination for the bugreport file"
 msgstr "hata raporu dosyası için bir konum belirtin"
 
-#: bugreport.c:132
+#: bugreport.c:138
 msgid "specify a strftime format suffix for the filename"
 msgstr "dosya adı için bir strftime biçimli ek belirtin"
 
-#: bugreport.c:156
+#: bugreport.c:162
 #, c-format
 msgid "could not create leading directories for '%s'"
 msgstr "'%s' için öncü dizinler oluşturulamadı"
 
-#: bugreport.c:163
+#: bugreport.c:169
 msgid "System Info"
 msgstr "Sistem Bilgisi"
 
-#: bugreport.c:166
+#: bugreport.c:172
 msgid "Enabled Hooks"
 msgstr "Etkin Kancalar"
 
-#: bugreport.c:174
+#: bugreport.c:180
 #, c-format
 msgid "couldn't create a new file at '%s'"
 msgstr "'%s' hata raporu dosyası oluşturulamadı"
 
-#: bugreport.c:186
+#: bugreport.c:184
+#, c-format
+msgid "unable to write to %s"
+msgstr "%s dosyasına yazılamıyor"
+
+#: bugreport.c:194
 #, c-format
 msgid "Created new report at '%s'.\n"
 msgstr "Hata raporu '%s' dosyasına yazıldı.\n"
 
-#: fast-import.c:3085
+#: fast-import.c:3100
 #, c-format
 msgid "Missing from marks for submodule '%s'"
 msgstr "'%s' altmodülü için '(on)-dan' imleri eksik"
 
-#: fast-import.c:3087
+#: fast-import.c:3102
 #, c-format
 msgid "Missing to marks for submodule '%s'"
 msgstr "'%s' altmodülü için '(o)-na' imleri eksik"
 
-#: fast-import.c:3222
+#: fast-import.c:3237
 #, c-format
 msgid "Expected 'mark' command, got %s"
 msgstr "'mark' komutu bekleniyordu, %s alındı"
 
-#: fast-import.c:3227
+#: fast-import.c:3242
 #, c-format
 msgid "Expected 'to' command, got %s"
 msgstr "'to' komutu bekleniyordu, %s alındı"
 
-#: fast-import.c:3317
+#: fast-import.c:3334
 msgid "Expected format name:filename for submodule rewrite option"
 msgstr "Altmodül yeniden yazım seçeneği için name:filename biçimi bekleniyordu"
 
-#: fast-import.c:3371
+#: fast-import.c:3388
 #, c-format
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "'%s' özelliği --allow-unsafe-features olmadan girdide yasaklı"
 
+#: http-fetch.c:111
+#, c-format
+msgid "argument to --packfile must be a valid hash (got '%s')"
+msgstr "--packfile için değişken geçerli bir sağlama olmalıdır ('%s' alındı)"
+
 #: credential-cache--daemon.c:223
 #, c-format
 msgid ""
@@ -22528,31 +22749,31 @@
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr "Ortak anahtar iğnelemesi cURL < 7.44.0 tarafından desteklenmiyor"
 
-#: http.c:914
+#: http.c:910
 msgid "CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0"
 msgstr "CURLSSLOPT_NO_REVOKE cURL < 7.44.0 tarafından desteklenmiyor"
 
-#: http.c:993
+#: http.c:989
 msgid "Protocol restrictions not supported with cURL < 7.19.4"
 msgstr "Protokol sınırlamaları cURL < 7.19.4 tarafından desteklenmiyor"
 
-#: http.c:1139
+#: http.c:1132
 #, c-format
 msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
 msgstr "Desteklenmeyen SSL arka ucu '%s'. Desteklenen SSL arka uçları:"
 
-#: http.c:1146
+#: http.c:1139
 #, c-format
 msgid "Could not set SSL backend to '%s': cURL was built without SSL backends"
 msgstr ""
 "SSL arka ucu '%s' olarak ayarlanamadı: cURL, SSL arka uçları olmadan yapılmış"
 
-#: http.c:1150
+#: http.c:1143
 #, c-format
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "SSL arka ucu '%s' olarak ayarlanamadı: Halihazırda ayarlanmış"
 
-#: http.c:2032
+#: http.c:2025
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -22563,112 +22784,135 @@
 " şu istendi: %s\n"
 "   yönlenen: %s"
 
-#: remote-curl.c:166
+#: remote-curl.c:168
 #, c-format
 msgid "invalid quoting in push-option value: '%s'"
 msgstr "push-option değerinde geçersiz tırnak içine alım: '%s'"
 
-#: remote-curl.c:263
+#: remote-curl.c:295
 #, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
 msgstr "%sinfo/refs geçerli değil: bu bir git deposu mu?"
 
-#: remote-curl.c:364
+#: remote-curl.c:396
 msgid "invalid server response; expected service, got flush packet"
 msgstr "geçersiz sunucu yanıtı; servis bekleniyordu, floş paketi alındı"
 
-#: remote-curl.c:395
+#: remote-curl.c:427
 #, c-format
 msgid "invalid server response; got '%s'"
 msgstr "geçersiz sunucu yanıtı; '%s' alındı"
 
-#: remote-curl.c:455
+#: remote-curl.c:487
 #, c-format
 msgid "repository '%s' not found"
 msgstr "'%s' deposu bulunamadı"
 
-#: remote-curl.c:459
+#: remote-curl.c:491
 #, c-format
 msgid "Authentication failed for '%s'"
 msgstr "'%s' için kimlik doğrulaması başarısız"
 
-#: remote-curl.c:463
+#: remote-curl.c:495
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr "'%s' erişilemiyor: %s"
 
-#: remote-curl.c:469
+#: remote-curl.c:501
 #, c-format
 msgid "redirecting to %s"
 msgstr "şuraya yeniden yönlendiriliyor: %s"
 
-#: remote-curl.c:593
+#: remote-curl.c:630
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "dosya sonuna dikkat edilmiyorsa dosya sonu olmamalıdır"
 
-#: remote-curl.c:673
+#: remote-curl.c:642
+msgid "remote server sent stateless separator"
+msgstr "uzak sunucu durumsuz ayırıcı gönderdi"
+
+#: remote-curl.c:712
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr ""
 "rpc sonrası verisi geri sarılamıyor - https.postBuffer'ı artırmayı deneyin"
 
-#: remote-curl.c:733
+#: remote-curl.c:742
+#, c-format
+msgid "remote-curl: bad line length character: %.4s"
+msgstr "remote-curl: hatalı satır uzunluğu karakteri: %.4s"
+
+#: remote-curl.c:744
+msgid "remote-curl: unexpected response end packet"
+msgstr "remote-curl: beklenmedik yanıt sonu paketi"
+
+#: remote-curl.c:820
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC başarısız oldu; %s"
 
-#: remote-curl.c:773
+#: remote-curl.c:860
 msgid "cannot handle pushes this big"
 msgstr "bu kadar büyük itmeler işlenemiyor"
 
-#: remote-curl.c:888
+#: remote-curl.c:975
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "istek söndürülemiyor; 'zlib deflate' hatası %d"
 
-#: remote-curl.c:892
+#: remote-curl.c:979
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "istek söndürülemiyor; 'zlib end' hatası %d"
 
-#: remote-curl.c:1023
+#: remote-curl.c:1029
+#, c-format
+msgid "%d bytes of length header were received"
+msgstr "üstbilginin %d baytı alındı"
+
+#: remote-curl.c:1031
+#, c-format
+msgid "%d bytes of body are still expected"
+msgstr "gövdenin %d baytı hâlâ bekleniyor"
+
+#: remote-curl.c:1120
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "programlanamayan http taşıyıcısı sığ işlevleri desteklemiyor"
 
-#: remote-curl.c:1038
+#: remote-curl.c:1135
 msgid "fetch failed."
 msgstr "getirme başarısız."
 
-#: remote-curl.c:1086
+#: remote-curl.c:1183
 msgid "cannot fetch by sha1 over smart http"
 msgstr "akıllı http üzerinden sha1 ile getirme yapılamıyor"
 
-#: remote-curl.c:1130 remote-curl.c:1136
+#: remote-curl.c:1227 remote-curl.c:1233
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "protokol hatası: sha/ref bekleniyordu, '%s' alındı"
 
-#: remote-curl.c:1148 remote-curl.c:1263
+#: remote-curl.c:1245 remote-curl.c:1360
 #, c-format
 msgid "http transport does not support %s"
 msgstr "http taşıyıcısı %s desteklemiyor"
 
-#: remote-curl.c:1184
+#: remote-curl.c:1281
 msgid "git-http-push failed"
 msgstr "git-http-push başarısız"
 
-#: remote-curl.c:1369
+#: remote-curl.c:1466
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: kullanım: git remote-curl <uzak-konum> [<url>]"
 
-#: remote-curl.c:1401
+#: remote-curl.c:1498
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl: git'ten komut akışı okunurken hata"
 
-#: remote-curl.c:1408
+#: remote-curl.c:1505
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl: yerel bir depo olmadan getirme yapılmaya çalışıldı"
 
-#: remote-curl.c:1448
+#: remote-curl.c:1546
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl: git'ten bilinmeyen komut '%s'"
@@ -23688,26 +23932,26 @@
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "'$displaypath' altmodül yoluna özyinelenemedi"
 
-#: git-submodule.sh:878
+#: git-submodule.sh:852
 msgid "The --cached option cannot be used with the --files option"
 msgstr "--cached seçeneği --files seçeneği ile birlikte kullanılamaz"
 
-#: git-submodule.sh:930
+#: git-submodule.sh:904
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "beklenmedik kip $mod_dst"
 
-#: git-submodule.sh:950
+#: git-submodule.sh:924
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr "  Uyarı: $display_name, $sha1_src gönderisini içermiyor"
 
-#: git-submodule.sh:953
+#: git-submodule.sh:927
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr "  Uyarı: $display_name, $sha1_dst gönderisini içermiyor"
 
-#: git-submodule.sh:956
+#: git-submodule.sh:930
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr "  Uyarı: $display_name, $sha1_src ve $sha1_dst gönderilerini içermiyor"
@@ -24119,7 +24363,7 @@
 msgstr[0] "%d yola dokunuldu\n"
 msgstr[1] "%d yola dokunuldu\n"
 
-#: git-add--interactive.perl:1053
+#: git-add--interactive.perl:1055
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -24127,7 +24371,7 @@
 "Eğer yama sorunsuzca uygulanırsa düzenlenen parça derhal hazırlama\n"
 "için imlenecektir."
 
-#: git-add--interactive.perl:1056
+#: git-add--interactive.perl:1058
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -24135,7 +24379,7 @@
 "Eğer yama sorunsuzca uygulanırsa düzenlenen parça derhal zulalama\n"
 "için imlenecektir."
 
-#: git-add--interactive.perl:1059
+#: git-add--interactive.perl:1061
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -24143,8 +24387,8 @@
 "Eğer yama sorunsuzca uygulanırsa, düzenlenen parça derhal hazırlıktan\n"
 "çıkarılma için imlenecektir."
 
-#: git-add--interactive.perl:1062 git-add--interactive.perl:1071
-#: git-add--interactive.perl:1077
+#: git-add--interactive.perl:1064 git-add--interactive.perl:1073
+#: git-add--interactive.perl:1079
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -24152,8 +24396,8 @@
 "Eğer yama sorunsuzca uygulanırsa düzenlenen parça derhal uygulama\n"
 "için imlenecektir."
 
-#: git-add--interactive.perl:1065 git-add--interactive.perl:1068
-#: git-add--interactive.perl:1074
+#: git-add--interactive.perl:1067 git-add--interactive.perl:1070
+#: git-add--interactive.perl:1076
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -24161,12 +24405,12 @@
 "Eğer yama sorunsuzca uygulanırsa düzenlenen parça derhal ıskartaya\n"
 "çıkarım için imlenecektir."
 
-#: git-add--interactive.perl:1111
+#: git-add--interactive.perl:1113
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "parça düzenleme dosyası yazım için açılamadı: %s"
 
-#: git-add--interactive.perl:1118
+#: git-add--interactive.perl:1120
 #, perl-format
 msgid ""
 "---\n"
@@ -24179,12 +24423,12 @@
 "'%s' satır kaldırmak için onları silin.\n"
 "%s ile başlayan satırlar kaldırılacaktır.\n"
 
-#: git-add--interactive.perl:1140
+#: git-add--interactive.perl:1142
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "parça düzenleme dosyası okuma için açılamadı: %s"
 
-#: git-add--interactive.perl:1248
+#: git-add--interactive.perl:1250
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -24198,7 +24442,7 @@
 "a - bu parçayı ve sonraki tüm parçaları hazırla\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini hazırlama"
 
-#: git-add--interactive.perl:1254
+#: git-add--interactive.perl:1256
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -24212,7 +24456,7 @@
 "a - bu parçayı ve sonraki tüm parçaları zulala\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini zulalama"
 
-#: git-add--interactive.perl:1260
+#: git-add--interactive.perl:1262
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -24226,7 +24470,7 @@
 "a - bu parçayı ve sonraki tüm parçaları hazırlıktan çıkar\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini hazırlıktan çıkarma"
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1268
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -24240,7 +24484,7 @@
 "a - bu parçayı ve sonraki tüm parçaları uygula\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini uygulama"
 
-#: git-add--interactive.perl:1272 git-add--interactive.perl:1290
+#: git-add--interactive.perl:1274 git-add--interactive.perl:1292
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -24254,7 +24498,7 @@
 "a - bu parçayı ve sonraki tüm parçaları at\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini atma"
 
-#: git-add--interactive.perl:1278
+#: git-add--interactive.perl:1280
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -24268,7 +24512,7 @@
 "a - bu parçayı ve sonraki tüm parçaları at\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini atma"
 
-#: git-add--interactive.perl:1284
+#: git-add--interactive.perl:1286
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -24282,7 +24526,7 @@
 "a - bu parçayı ve sonraki tüm parçaları uygula\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini uygulama"
 
-#: git-add--interactive.perl:1296
+#: git-add--interactive.perl:1298
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -24296,7 +24540,7 @@
 "a - bu parçayı ve sonraki tüm parçaları uygula\n"
 "d - bu parçayı veya sonraki parçalardan herhangi birini uygulama"
 
-#: git-add--interactive.perl:1311
+#: git-add--interactive.perl:1313
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -24318,85 +24562,90 @@
 "e - geçerli parçayı el ile düzenle\n"
 "? - yardımı yazdır\n"
 
-#: git-add--interactive.perl:1342
+#: git-add--interactive.perl:1344
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "Seçili parçalar indekse uygulanamıyor!\n"
 
-#: git-add--interactive.perl:1357
+#: git-add--interactive.perl:1359
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "birleştirilmeyenler yok sayılıyor: %s\n"
 
-#: git-add--interactive.perl:1468
+#: git-add--interactive.perl:1478
 #, perl-format
 msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
 msgstr "Kip değişimi çalışma ağacına uygulansın mı [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1469
+#: git-add--interactive.perl:1479
 #, perl-format
 msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
 msgstr "Silme çalışma ağacına uygulansın mı [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1470
+#: git-add--interactive.perl:1480
+#, perl-format
+msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
+msgstr "Ekleme çalışma ağacına uygulansın mı [y,n,q,a,d%s,?]? "
+
+#: git-add--interactive.perl:1481
 #, perl-format
 msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
 msgstr "Bu parça çalışma ağacına uygulansın mı [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1570
+#: git-add--interactive.perl:1587
 msgid "No other hunks to goto\n"
 msgstr "Gidilecek başka parça yok\n"
 
-#: git-add--interactive.perl:1588
+#: git-add--interactive.perl:1605
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Geçersiz sayı: '%s'\n"
 
-#: git-add--interactive.perl:1593
+#: git-add--interactive.perl:1610
 #, perl-format
 msgid "Sorry, only %d hunk available.\n"
 msgid_plural "Sorry, only %d hunks available.\n"
 msgstr[0] "Üzgünüm, yalnızca %d parça kullanılabilir.\n"
 msgstr[1] "Üzgünüm, yalnızca %d parça kullanılabilir.\n"
 
-#: git-add--interactive.perl:1619
+#: git-add--interactive.perl:1636
 msgid "No other hunks to search\n"
 msgstr "Aranacak başka parça yok\n"
 
-#: git-add--interactive.perl:1636
+#: git-add--interactive.perl:1653
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Hatalı oluşturulmuş arama düzenli ifadesi %s: %s\n"
 
-#: git-add--interactive.perl:1646
+#: git-add--interactive.perl:1663
 msgid "No hunk matches the given pattern\n"
 msgstr "Verilen dizgi ile hiçbir parça eşleşmiyor\n"
 
-#: git-add--interactive.perl:1658 git-add--interactive.perl:1680
+#: git-add--interactive.perl:1675 git-add--interactive.perl:1697
 msgid "No previous hunk\n"
 msgstr "Öncesinde parça yok\n"
 
-#: git-add--interactive.perl:1667 git-add--interactive.perl:1686
+#: git-add--interactive.perl:1684 git-add--interactive.perl:1703
 msgid "No next hunk\n"
 msgstr "Sonrasında parça yok\n"
 
-#: git-add--interactive.perl:1692
+#: git-add--interactive.perl:1709
 msgid "Sorry, cannot split this hunk\n"
 msgstr "Üzgünüm, bu parça bölünemiyor\n"
 
-#: git-add--interactive.perl:1698
+#: git-add--interactive.perl:1715
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
 msgstr[0] "%d parçaya bölündü.\n"
 msgstr[1] "%d parçaya bölündü.\n"
 
-#: git-add--interactive.perl:1708
+#: git-add--interactive.perl:1725
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "Üzgünüm, bu parça düzenlenemiyor\n"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1773
+#: git-add--interactive.perl:1790
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -24414,19 +24663,19 @@
 "add untracked - izlenmeyen dosyaların içeriğini hazırlanan değişiklik setine "
 "ekle\n"
 
-#: git-add--interactive.perl:1790 git-add--interactive.perl:1795
-#: git-add--interactive.perl:1798 git-add--interactive.perl:1805
-#: git-add--interactive.perl:1808 git-add--interactive.perl:1815
-#: git-add--interactive.perl:1819 git-add--interactive.perl:1825
+#: git-add--interactive.perl:1807 git-add--interactive.perl:1812
+#: git-add--interactive.perl:1815 git-add--interactive.perl:1822
+#: git-add--interactive.perl:1825 git-add--interactive.perl:1832
+#: git-add--interactive.perl:1836 git-add--interactive.perl:1842
 msgid "missing --"
 msgstr "-- eksik"
 
-#: git-add--interactive.perl:1821
+#: git-add--interactive.perl:1838
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "bilinmeyen --patch kipi: %s"
 
-#: git-add--interactive.perl:1827 git-add--interactive.perl:1833
+#: git-add--interactive.perl:1844 git-add--interactive.perl:1850
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "geçersiz değişken %s, -- bekleniyor"
@@ -24740,56 +24989,56 @@
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) To: %s, '%s' satırından ekleniyor\n"
 
-#: git-send-email.perl:1718
+#: git-send-email.perl:1722
 #, 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:1753
+#: git-send-email.perl:1757
 #, 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:1864
+#: git-send-email.perl:1868
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) '%s' çalıştırılamadı"
 
-#: git-send-email.perl:1871
+#: git-send-email.perl:1875
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) %s: %s, '%s' konumundan ekleniyor\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1879
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) şuraya olan veri yolu kapatılamadı: '%s'"
 
-#: git-send-email.perl:1905
+#: git-send-email.perl:1909
 msgid "cannot send message as 7bit"
 msgstr "ileti 7 bit olarak gönderilemiyor"
 
-#: git-send-email.perl:1913
+#: git-send-email.perl:1917
 msgid "invalid transfer encoding"
 msgstr "geçersiz aktarım kodlaması"
 
-#: git-send-email.perl:1954 git-send-email.perl:2006 git-send-email.perl:2016
+#: git-send-email.perl:1958 git-send-email.perl:2010 git-send-email.perl:2020
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "%s açılamıyor: %s\n"
 
-#: git-send-email.perl:1957
+#: git-send-email.perl:1961
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr "%s: yama 998 karakterden daha uzun bir satır içeriyor"
 
-#: git-send-email.perl:1974
+#: git-send-email.perl:1978
 #, 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:1978
+#: git-send-email.perl:1982
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "%s ögesini gerçekten göndermek istiyor musunuz? [y|N]: "
diff --git a/po/vi.po b/po/vi.po
index 9fcf8aa..d730cf1 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -7,10 +7,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: git  v2.27.0 rd2\n"
+"Project-Id-Version: git  v2.28.0 rd2\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-05-27 07:23+0800\n"
-"PO-Revision-Date: 2020-05-27 08:06+0700\n"
+"POT-Creation-Date: 2020-07-10 09:53+0800\n"
+"PO-Revision-Date: 2020-07-15 15:35+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"
@@ -21,7 +21,7 @@
 "X-Language-Team-Website: <http://translationproject.org/team/vi.html>\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 "X-Poedit-Basepath: ..\n"
-"X-Generator: Poedit 2.3.1\n"
+"X-Generator: Poedit 2.4\n"
 
 #: add-interactive.c:368
 #, c-format
@@ -113,21 +113,21 @@
 msgid "ignoring unmerged: %s"
 msgstr "bỏ qua những thứ chưa hòa trộn: %s"
 
-#: add-interactive.c:929 add-patch.c:1675 git-add--interactive.perl:1366
+#: add-interactive.c:929 add-patch.c:1691 git-add--interactive.perl:1368
 #, 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:931 add-patch.c:1673 git-add--interactive.perl:1368
+#: add-interactive.c:931 add-patch.c:1689 git-add--interactive.perl:1370
 #, c-format
 msgid "No changes.\n"
 msgstr "Không có thay đổi nào.\n"
 
-#: add-interactive.c:935 git-add--interactive.perl:1376
+#: add-interactive.c:935 git-add--interactive.perl:1378
 msgid "Patch update"
 msgstr "Cập nhật miếng vá"
 
-#: add-interactive.c:974 git-add--interactive.perl:1754
+#: add-interactive.c:974 git-add--interactive.perl:1771
 msgid "Review diff"
 msgstr "Xem xét lại diff"
 
@@ -201,11 +201,11 @@
 msgid "(empty) select nothing"
 msgstr "(để trống) không chọn gì"
 
-#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1851
+#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1868
 msgid "*** Commands ***"
 msgstr "*** Lệnh ***"
 
-#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1848
+#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1865
 msgid "What now"
 msgstr "Giờ thì sao"
 
@@ -222,7 +222,7 @@
 #: builtin/merge.c:276 builtin/pull.c:190 builtin/submodule--helper.c:409
 #: builtin/submodule--helper.c:1394 builtin/submodule--helper.c:1397
 #: builtin/submodule--helper.c:1902 builtin/submodule--helper.c:1905
-#: builtin/submodule--helper.c:2148 bugreport.c:129
+#: builtin/submodule--helper.c:2148 bugreport.c:135
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "đường-dẫn"
@@ -231,27 +231,32 @@
 msgid "could not refresh index"
 msgstr "không thể đọc lại bảng mục lục"
 
-#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1765
+#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1782
 #, c-format
 msgid "Bye.\n"
 msgstr "Tạm biệt.\n"
 
-#: add-patch.c:34 git-add--interactive.perl:1428
+#: add-patch.c:34 git-add--interactive.perl:1430
 #, c-format, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "Thay đổi chế độ bệ phóng [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:35 git-add--interactive.perl:1429
+#: add-patch.c:35 git-add--interactive.perl:1431
 #, c-format, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "Xóa khỏi bệ phóng [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:36 git-add--interactive.perl:1430
+#: add-patch.c:36 git-add--interactive.perl:1432
+#, c-format, perl-format
+msgid "Stage addition [y,n,q,a,d%s,?]? "
+msgstr "Thêm vào bệ phóng [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:37 git-add--interactive.perl:1433
 #, c-format, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Đưa lên bệ phóng khúc này [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:38
+#: add-patch.c:39
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "staging."
@@ -259,7 +264,7 @@
 "Nếu miếng vá được áp dụng sạch sẽ, khúc đã sửa sẽ ngay lập tức được đánh dấu "
 "để chuyển lên bệ phóng."
 
-#: add-patch.c:41
+#: add-patch.c:42
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -274,22 +279,27 @@
 "d - đừng đưa lên bệ phóng khúc này cũng như bất kỳ cái nào còn lại trong tập "
 "tin\n"
 
-#: add-patch.c:55 git-add--interactive.perl:1433
+#: add-patch.c:56 git-add--interactive.perl:1436
 #, c-format, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "Thay đổi chế độ tạm cất đi [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:56 git-add--interactive.perl:1434
+#: add-patch.c:57 git-add--interactive.perl:1437
 #, c-format, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "Xóa tạm cất [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:57 git-add--interactive.perl:1435
+#: add-patch.c:58 git-add--interactive.perl:1438
+#, c-format, perl-format
+msgid "Stash addition [y,n,q,a,d%s,?]? "
+msgstr "Thêm vào tạm cất [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:59 git-add--interactive.perl:1439
 #, c-format, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "Tạm cất khúc này [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:59
+#: add-patch.c:61
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "stashing."
@@ -297,7 +307,7 @@
 "Nếu miếng vá được áp dụng sạch sẽ, khúc đã sửa sẽ ngay lập tức được đánh dấu "
 "để tạm cất."
 
-#: add-patch.c:62
+#: add-patch.c:64
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -311,22 +321,27 @@
 "a - tạm cất khúc này và tất cả các khúc sau này trong tập tin\n"
 "d - đừng tạm cất khúc này cũng như bất kỳ cái nào còn lại trong tập tin\n"
 
-#: add-patch.c:78 git-add--interactive.perl:1438
+#: add-patch.c:80 git-add--interactive.perl:1442
 #, c-format, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr "Thay đổi chế độ bỏ ra khỏi bệ phóng [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:79 git-add--interactive.perl:1439
+#: add-patch.c:81 git-add--interactive.perl:1443
 #, c-format, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "Xóa bỏ việc bỏ ra khỏi bệ phóng [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:80 git-add--interactive.perl:1440
+#: add-patch.c:82 git-add--interactive.perl:1444
+#, c-format, perl-format
+msgid "Unstage addition [y,n,q,a,d%s,?]? "
+msgstr "Thêm vào việc bỏ ra khỏi bệ phóng [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:83 git-add--interactive.perl:1445
 #, c-format, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Bỏ ra khỏi bệ phóng khúc này [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:82
+#: add-patch.c:85
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "unstaging."
@@ -334,7 +349,7 @@
 "Nếu miếng vá được áp dụng sạch sẽ, khúc đã sửa sẽ ngay lập tức được đánh dấu "
 "để bỏ ra khỏi bệ phóng."
 
-#: add-patch.c:85
+#: add-patch.c:88
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -350,22 +365,27 @@
 "d - đừng đưa ra khỏi bệ phóng khúc này cũng như bất kỳ cái nào còn lại trong "
 "tập tin\n"
 
-#: add-patch.c:100 git-add--interactive.perl:1443
+#: add-patch.c:103 git-add--interactive.perl:1448
 #, c-format, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr "Áp dụng thay đổi chế độ cho mục lục [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:101 git-add--interactive.perl:1444
+#: add-patch.c:104 git-add--interactive.perl:1449
 #, c-format, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "Áp dụng việc xóa vào mục lục [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:102 git-add--interactive.perl:1445
+#: add-patch.c:105 git-add--interactive.perl:1450
+#, c-format, perl-format
+msgid "Apply addition to index [y,n,q,a,d%s,?]? "
+msgstr "Áp dụng các thêm vào mục lục [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:106 git-add--interactive.perl:1451
 #, c-format, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr "Áo dụng khúc này vào mục lục [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:104 add-patch.c:169 add-patch.c:212
+#: 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."
@@ -373,7 +393,7 @@
 "Nếu miếng vá được áp dụng sạch sẽ, khúc đã sửa sẽ ngay lập tức được đánh dấu "
 "để áp dụng."
 
-#: add-patch.c:107
+#: add-patch.c:111
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -387,25 +407,31 @@
 "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:122 git-add--interactive.perl:1448
-#: git-add--interactive.perl:1463
+#: add-patch.c:126 git-add--interactive.perl:1454
+#: git-add--interactive.perl:1472
 #, c-format, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr "Loại bỏ các thay đổi chế độ từ cây làm việc [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:123 git-add--interactive.perl:1449
-#: git-add--interactive.perl:1464
+#: add-patch.c:127 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
 #, c-format, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr "Loại bỏ việc xóa khỏi cây làm việc [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:124 git-add--interactive.perl:1450
-#: git-add--interactive.perl:1465
+#: add-patch.c:128 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
+#, c-format, perl-format
+msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
+msgstr "Thêm các loại bỏ khỏi cây làm việc [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:129 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
 #, c-format, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr "Loại bỏ khúc này khỏi cây làm việc [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:126 add-patch.c:148 add-patch.c:191
+#: 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."
@@ -413,7 +439,7 @@
 "Nếu miếng vá được áp dụng sạch sẽ, khúc đã sửa sẽ ngay lập tức được đánh dấu "
 "để loại bỏ."
 
-#: add-patch.c:129 add-patch.c:194
+#: add-patch.c:134 add-patch.c:202
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -427,22 +453,27 @@
 "a - loại bỏ khúc này và tất cả các khúc sau này trong tập tin\n"
 "d - đừng loại bỏ 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:144 add-patch.c:187 git-add--interactive.perl:1453
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1460
 #, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Loại bỏ thay đổi chế độ từ mục lục và cây làm việc [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:145 add-patch.c:188 git-add--interactive.perl:1454
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1461
 #, c-format, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Loại bỏ việc xóa khỏi mục lục và cây làm việc [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:146 add-patch.c:189 git-add--interactive.perl:1455
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1462
+#, c-format, perl-format
+msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Thêm các loại bỏ từ mục lục và cây làm việc [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1463
 #, c-format, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Loại bỏ khúc này khỏi mục lục và cây làm việc [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:151
+#: add-patch.c:157
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -456,22 +487,27 @@
 "a - loại bỏ khúc này và tất cả các khúc sau này trong tập tin\n"
 "d - đừng loại bỏ 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:165 add-patch.c:208 git-add--interactive.perl:1458
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1466
 #, c-format, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Áp dụng thay đổi chế độ cho mục lục và cây làm việc [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:166 add-patch.c:209 git-add--interactive.perl:1459
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1467
 #, c-format, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Áp dụng việc xóa vào mục lục và cây làm việc [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:167 add-patch.c:210 git-add--interactive.perl:1460
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1468
+#, c-format, perl-format
+msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Áp dụng thêm vào mục lục và cây làm việc [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1469
 #, c-format, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Áp dụng khúc này vào mục lục và cây làm việc [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:172
+#: add-patch.c:179
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -485,7 +521,7 @@
 "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:215
+#: add-patch.c:224
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -499,34 +535,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:319
+#: add-patch.c:328
 #, 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:338 add-patch.c:342
+#: add-patch.c:347 add-patch.c:351
 #, 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:396
+#: add-patch.c:405
 msgid "could not parse diff"
 msgstr "không thể phân tích cú pháp khác biệt"
 
-#: add-patch.c:415
+#: add-patch.c:424
 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:429
+#: add-patch.c:438
 #, c-format
 msgid "failed to run '%s'"
 msgstr "gặp lỗi khi chạy “%s”"
 
-#: add-patch.c:588
+#: add-patch.c:602
 msgid "mismatched output from interactive.diffFilter"
 msgstr "đầu ra không khớp từ interactive.diffFilter"
 
-#: add-patch.c:589
+#: add-patch.c:603
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
@@ -534,7 +570,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:762
+#: add-patch.c:776
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -543,7 +579,7 @@
 "cần dòng ngữ cảnh #%d trong\n"
 "%.*s"
 
-#: add-patch.c:777
+#: add-patch.c:791
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -556,11 +592,11 @@
 "\tkhông được kết thúc bằng:\n"
 "%.*s"
 
-#: add-patch.c:1053 git-add--interactive.perl:1112
+#: add-patch.c:1067 git-add--interactive.perl:1114
 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:1057
+#: add-patch.c:1071
 #, c-format
 msgid ""
 "---\n"
@@ -574,7 +610,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:1071 git-add--interactive.perl:1126
+#: add-patch.c:1085 git-add--interactive.perl:1128
 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"
@@ -584,11 +620,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:1104
+#: add-patch.c:1118
 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:1149
+#: add-patch.c:1163
 msgid "'git apply --cached' failed"
 msgstr "'git apply --cached' gặp lỗi"
 
@@ -604,26 +640,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:1218 git-add--interactive.perl:1239
+#: add-patch.c:1232 git-add--interactive.perl:1241
 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:1261
+#: add-patch.c:1275
 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:1262 git-add--interactive.perl:1343
+#: add-patch.c:1276 git-add--interactive.perl:1345
 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:1269 git-add--interactive.perl:1346
+#: add-patch.c:1283 git-add--interactive.perl:1348
 msgid "Nothing was applied.\n"
 msgstr "Đã không áp dụng gì cả.\n"
 
-#: add-patch.c:1326
+#: add-patch.c:1340
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -645,68 +681,68 @@
 "e - sửa bằng tay khúc hiện hành\n"
 "? - hiển thị trợ giúp\n"
 
-#: add-patch.c:1447 add-patch.c:1457
+#: add-patch.c:1463 add-patch.c:1473
 msgid "No previous hunk"
 msgstr "Không có khúc kế trước"
 
-#: add-patch.c:1452 add-patch.c:1462
+#: add-patch.c:1468 add-patch.c:1478
 msgid "No next hunk"
 msgstr "Không có khúc kế tiếp"
 
-#: add-patch.c:1468
+#: add-patch.c:1484
 msgid "No other hunks to goto"
 msgstr "Không còn khúc nào để mà nhảy đến"
 
-#: add-patch.c:1479 git-add--interactive.perl:1577
+#: add-patch.c:1495 git-add--interactive.perl:1594
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "nhảy đến khúc nào (<ret> để xem thêm)? "
 
-#: add-patch.c:1480 git-add--interactive.perl:1579
+#: add-patch.c:1496 git-add--interactive.perl:1596
 msgid "go to which hunk? "
 msgstr "nhảy đến khúc nào? "
 
-#: add-patch.c:1491
+#: add-patch.c:1507
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "Số không hợp lệ: “%s”"
 
-#: add-patch.c:1496
+#: add-patch.c:1512
 #, 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:1505
+#: add-patch.c:1521
 msgid "No other hunks to search"
 msgstr "Không còn khúc nào để mà tìm kiếm"
 
-#: add-patch.c:1511 git-add--interactive.perl:1623
+#: add-patch.c:1527 git-add--interactive.perl:1640
 msgid "search for regex? "
 msgstr "tìm kiếm cho biểu thức chính quy? "
 
-#: add-patch.c:1526
+#: add-patch.c:1542
 #, 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:1543
+#: add-patch.c:1559
 msgid "No hunk matches the given pattern"
 msgstr "Không thấy khúc nào khớp mẫu đã cho"
 
-#: add-patch.c:1550
+#: add-patch.c:1566
 msgid "Sorry, cannot split this hunk"
 msgstr "Rất tiếc, không thể chia nhỏ khúc này"
 
-#: add-patch.c:1554
+#: add-patch.c:1570
 #, c-format
 msgid "Split into %d hunks."
 msgstr "Chi nhỏ thành %d khúc."
 
-#: add-patch.c:1558
+#: add-patch.c:1574
 msgid "Sorry, cannot edit this hunk"
 msgstr "Rất tiếc, không thể sửa khúc này"
 
-#: add-patch.c:1609
+#: add-patch.c:1625
 msgid "'git apply' failed"
 msgstr "'git apply' gặp lỗi"
 
@@ -1399,7 +1435,7 @@
 
 #: apply.c:5008 builtin/am.c:2238 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3458 builtin/rebase.c:1332
+#: builtin/pack-objects.c:3530 builtin/rebase.c:1332
 msgid "action"
 msgstr "hành động"
 
@@ -1489,7 +1525,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:480 builtin/pack-objects.c:232 builtin/pack-objects.c:235
+#: archive-zip.c:480 builtin/pack-objects.c:243 builtin/pack-objects.c:246
 #, c-format
 msgid "deflate error (%d)"
 msgstr "lỗi giải nén (%d)"
@@ -1559,8 +1595,8 @@
 msgstr "nối thêm tiền tố vào từng đường dẫn tập tin trong kho lưu"
 
 #: archive.c:467 builtin/blame.c:861 builtin/blame.c:865 builtin/blame.c:866
-#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1162
-#: builtin/fast-export.c:1164 builtin/fast-export.c:1168 builtin/grep.c:907
+#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1208
+#: builtin/fast-export.c:1210 builtin/fast-export.c:1214 builtin/grep.c:907
 #: 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
@@ -1784,10 +1820,10 @@
 msgstr ""
 "cùng sử dụng --reverse và --first-parent cần chỉ định lần chuyển giao cuối"
 
-#: blame.c:2821 bundle.c:167 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
+#: blame.c:2821 bundle.c:187 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
 #: sequencer.c:4466 submodule.c:847 builtin/commit.c:1047 builtin/log.c:405
 #: builtin/log.c:1012 builtin/log.c:1541 builtin/log.c:1945 builtin/log.c:2235
-#: builtin/merge.c:415 builtin/pack-objects.c:3276 builtin/pack-objects.c:3291
+#: builtin/merge.c:415 builtin/pack-objects.c:3348 builtin/pack-objects.c:3363
 #: builtin/shortlog.c:192
 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"
@@ -1950,82 +1986,86 @@
 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:36
+#: bundle.c:47
 #, c-format
 msgid "'%s' does not look like a v2 bundle file"
 msgstr "“%s” không giống như tập tin v2 bundle (định dạng dump của git)"
 
-#: bundle.c:64
+#: bundle.c:69
+msgid "unknown hash algorithm length"
+msgstr "không hiểu chiều dài thuật toán băm dữ liệu"
+
+#: bundle.c:84
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "phần đầu không được thừa nhận: %s%s (%d)"
 
-#: bundle.c:90 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
+#: bundle.c:110 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
 msgstr "không thể mở “%s”"
 
-#: bundle.c:143
+#: bundle.c:163
 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:146
+#: bundle.c:166
 msgid "need a repository to verify a bundle"
 msgstr "cần một kho chứa để thẩm tra một bundle"
 
-#: bundle.c:197
+#: bundle.c:217
 #, 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:204
+#: bundle.c:224
 msgid "The bundle records a complete history."
 msgstr "Lệnh bundle ghi lại toàn bộ lịch sử."
 
-#: bundle.c:206
+#: bundle.c:226
 #, 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:273
+#: bundle.c:293
 msgid "unable to dup bundle descriptor"
 msgstr "không thể nhân đôi bộ mô tả bundle"
 
-#: bundle.c:280
+#: bundle.c:300
 msgid "Could not spawn pack-objects"
 msgstr "Không thể sản sinh đối tượng gói"
 
-#: bundle.c:291
+#: bundle.c:311
 msgid "pack-objects died"
 msgstr "đối tượng gói đã chết"
 
-#: bundle.c:333
+#: bundle.c:353
 msgid "rev-list died"
 msgstr "rev-list đã chết"
 
-#: bundle.c:382
+#: bundle.c:402
 #, 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:461 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
+#: bundle.c:481 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "đối số không được thừa nhận: %s"
 
-#: bundle.c:469
+#: bundle.c:489
 msgid "Refusing to create empty bundle."
 msgstr "Từ chối tạo một bó dữ liệu trống rỗng."
 
-#: bundle.c:479
+#: bundle.c:499
 #, c-format
 msgid "cannot create '%s'"
 msgstr "không thể tạo “%s”"
 
-#: bundle.c:504
+#: bundle.c:524
 msgid "index-pack died"
 msgstr "mục lục gói đã chết"
 
@@ -2034,272 +2074,264 @@
 msgid "invalid color value: %.*s"
 msgstr "giá trị màu không hợp lệ: %.*s"
 
-#: commit-graph.c:183
+#: commit-graph.c:238
 msgid "commit-graph file is too small"
 msgstr "tập tin đồ-thị-các-lần-chuyển-giao quá nhỏ"
 
-#: commit-graph.c:248
+#: commit-graph.c:303
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "chữ ký đồ-thị-các-lần-chuyển-giao %X không khớp chữ ký %X"
 
-#: commit-graph.c:255
+#: commit-graph.c:310
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "phiên bản đồ-thị-các-lần-chuyển-giao %X không khớp phiên bản %X"
 
-#: commit-graph.c:262
+#: commit-graph.c:317
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "phiên bản đồ-thị-các-lần-chuyển-giao %X không khớp phiên bản %X"
 
-#: commit-graph.c:284
+#: commit-graph.c:339
 msgid "commit-graph chunk lookup table entry missing; file may be incomplete"
 msgstr ""
 "bảng tìm kiếm mảnh đồ-thị-các-lần-chuyển-giao còn thiếu; tập tin có thể sẽ "
 "không hoàn thiện"
 
-#: commit-graph.c:294
+#: commit-graph.c:349
 #, c-format
 msgid "commit-graph improper chunk offset %08x%08x"
 msgstr "bù mảnh đồ-thị-các-lần-chuyển-giao không đúng chỗ %08x%08x"
 
-#: commit-graph.c:362
+#: commit-graph.c:417
 #, c-format
 msgid "commit-graph chunk id %08x appears multiple times"
 msgstr "mã mảnh đồ-thị-các-lần-chuyển-giao %08x xuất hiện nhiều lần"
 
-#: commit-graph.c:436
+#: commit-graph.c:491
 msgid "commit-graph has no base graphs chunk"
 msgstr "đồ-thị-các-lần-chuyển-giao có không có mảnh các đồ họa cơ sở"
 
-#: commit-graph.c:446
+#: commit-graph.c:501
 msgid "commit-graph chain does not match"
 msgstr "móc xích đồ-thị-các-lần-chuyển-giao không khớp"
 
-#: commit-graph.c:494
+#: commit-graph.c:549
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr ""
 "móc xích đồ-thị-các-lần-chuyển-giao không hợp lệ: dòng '%s' không phải là "
 "một mã băm"
 
-#: commit-graph.c:518
+#: commit-graph.c:573
 msgid "unable to find all commit-graph files"
 msgstr "không thể tìm thấy tất cả các tập tin đồ-thị-các-lần-chuyển-giao"
 
-#: commit-graph.c:651 commit-graph.c:711
+#: commit-graph.c:706 commit-graph.c:770
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr ""
 "vị trí lần chuyển giao không hợp lệ. đồ-thị-các-lần-chuyển-giao có vẻ như đã "
 "bị hỏng"
 
-#: commit-graph.c:672
+#: commit-graph.c:727
 #, c-format
 msgid "could not find commit %s"
 msgstr "không thể tìm thấy lần chuyển giao %s"
 
-#: commit-graph.c:948 builtin/am.c:1292
+#: commit-graph.c:1009 builtin/am.c:1292
 #, 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:1096
+#: commit-graph.c:1157
 msgid "Writing changed paths Bloom filters index"
 msgstr "Ghi dữ liệu các mục lục Bloom đường dẫn đã bị thay đổi"
 
-#: commit-graph.c:1121
+#: commit-graph.c:1182
 msgid "Writing changed paths Bloom filters data"
 msgstr "Ghi dữ liệu các bộ lọc Bloom đường dẫn đã bị thay đổi"
 
-#: commit-graph.c:1160 builtin/pack-objects.c:2783
+#: commit-graph.c:1221 builtin/pack-objects.c:2832
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "không thể lấy kiểu của đối tượng “%s”"
 
-#: commit-graph.c:1196
+#: commit-graph.c:1257
 msgid "Loading known commits in commit graph"
 msgstr "Đang tải các lần chuyển giao chưa biết trong đồ thị lần chuyển giao"
 
-#: commit-graph.c:1213
+#: commit-graph.c:1274
 msgid "Expanding reachable commits in commit graph"
 msgstr ""
 "Mở rộng các lần chuyển giao có thể tiếp cận được trong trong đồ thị lần "
 "chuyển giao"
 
-#: commit-graph.c:1233
+#: commit-graph.c:1294
 msgid "Clearing commit marks in commit graph"
 msgstr "Đang dọn dẹp các đánh dấu lần chuyển giao trong đồ thị lần chuyển giao"
 
-#: commit-graph.c:1252
+#: commit-graph.c:1313
 msgid "Computing commit graph generation numbers"
 msgstr "Đang tính toán số tạo đồ thị các lần chuyển giao"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1367
 msgid "Computing commit changed paths Bloom filters"
 msgstr "Đang tính toán chuyển giao các bộ lọc Bloom đường dẫn bị thay đổi"
 
-#: commit-graph.c:1359
+#: commit-graph.c:1423
+msgid "Collecting referenced commits"
+msgstr "Đang sưu tập các lần chuyển giao được tham chiếu"
+
+#: commit-graph.c:1447
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] ""
 "Đang tìm các lần chuyển giao cho đồ thị lần chuyển giao trong %d gói"
 
-#: commit-graph.c:1372
+#: commit-graph.c:1460
 #, c-format
 msgid "error adding pack %s"
 msgstr "gặp lỗi thêm gói %s"
 
-#: commit-graph.c:1376
+#: commit-graph.c:1464
 #, c-format
 msgid "error opening index for %s"
 msgstr "gặp lỗi khi mở mục lục cho “%s”"
 
-#: commit-graph.c:1405
-#, c-format
-msgid "Finding commits for commit graph from %d ref"
-msgid_plural "Finding commits for commit graph from %d refs"
-msgstr[0] ""
-"Đang tìm các lần chuyển giao cho đồ thị lần chuyển giao từ %d tham chiếu"
-
-#: commit-graph.c:1426
-#, c-format
-msgid "invalid commit object id: %s"
-msgstr "mã số đối tượng lần chuyển giao không hợp lệ: %s"
-
-#: commit-graph.c:1442
+#: commit-graph.c:1503
 msgid "Finding commits for commit graph among packed objects"
 msgstr ""
 "Đang tìm các lần chuyển giao cho đồ thị lần chuyển giao trong số các đối "
 "tượng đã đóng gói"
 
-#: commit-graph.c:1457
+#: commit-graph.c:1518
 msgid "Counting distinct commits in commit graph"
 msgstr "Đang đếm các lần chuyển giao khác nhau trong đồ thị lần chuyển giao"
 
-#: commit-graph.c:1489
+#: commit-graph.c:1550
 msgid "Finding extra edges in commit graph"
 msgstr "Đang tìm các cạnh mở tộng trong đồ thị lần chuyển giao"
 
-#: commit-graph.c:1538
+#: commit-graph.c:1599
 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:1572 midx.c:812
+#: commit-graph.c:1633 midx.c:812
 #, 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”"
 
-#: commit-graph.c:1585
+#: commit-graph.c:1646
 msgid "unable to create temporary graph layer"
 msgstr "không thể tạo lớp sơ đồ tạm thời"
 
-#: commit-graph.c:1590
+#: commit-graph.c:1651
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "không thể chỉnh sửa quyền chia sẻ thành “%s”"
 
-#: commit-graph.c:1667
+#: commit-graph.c:1728
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "Đang ghi ra đồ thị các lần chuyển giao trong lần %d"
 
-#: commit-graph.c:1712
+#: commit-graph.c:1773
 msgid "unable to open commit-graph chain file"
 msgstr "không thể mở tập tin mắt xích đồ thị chuyển giao"
 
-#: commit-graph.c:1728
+#: commit-graph.c:1789
 msgid "failed to rename base commit-graph file"
 msgstr "gặp lỗi khi đổi tên tập tin đồ-thị-các-lần-chuyển-giao"
 
-#: commit-graph.c:1748
+#: commit-graph.c:1809
 msgid "failed to rename temporary commit-graph file"
 msgstr "gặp lỗi khi đổi tên tập tin đồ-thị-các-lần-chuyển-giao tạm thời"
 
-#: commit-graph.c:1874
+#: commit-graph.c:1935
 msgid "Scanning merged commits"
 msgstr "Đang quét các lần chuyển giao đã hòa trộn"
 
-#: commit-graph.c:1885
+#: commit-graph.c:1946
 #, c-format
 msgid "unexpected duplicate commit id %s"
 msgstr "gặp mã số tích lần chuyển giao bị trùng lặp “%s”"
 
-#: commit-graph.c:1908
+#: commit-graph.c:1969
 msgid "Merging commit-graph"
 msgstr "Đang hòa trộn đồ-thị-các-lần-chuyển-giao"
 
-#: commit-graph.c:2096
+#: commit-graph.c:2156
 #, c-format
 msgid "the commit graph format cannot write %d commits"
 msgstr "định dạng đồ họa các lần chuyển giao không thể ghi %d lần chuyển giao"
 
-#: commit-graph.c:2107
+#: commit-graph.c:2167
 msgid "too many commits to write graph"
 msgstr "có quá nhiều lần chuyển giao để ghi đồ thị"
 
-#: commit-graph.c:2200
+#: commit-graph.c:2260
 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:2210
+#: commit-graph.c:2270
 #, 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:2220 commit-graph.c:2235
+#: commit-graph.c:2280 commit-graph.c:2295
 #, 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:2227
+#: commit-graph.c:2287
 #, 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:2245
+#: commit-graph.c:2305
 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:2259
+#: commit-graph.c:2320
 #, 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:2266
+#: commit-graph.c:2327
 #, 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:2276
+#: commit-graph.c:2337
 #, 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:2285
+#: commit-graph.c:2346
 #, 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:2298
+#: commit-graph.c:2360
 #, 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:2303
+#: commit-graph.c:2365
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2307,7 +2339,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:2307
+#: commit-graph.c:2369
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2315,12 +2347,12 @@
 "đồ-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:2322
+#: commit-graph.c:2385
 #, c-format
 msgid "commit-graph generation for commit %s is %u != %u"
 msgstr "tạo đồ-thị-các-lần-chuyển-giao cho lần chuyển giao %s là %u != %u"
 
-#: commit-graph.c:2328
+#: commit-graph.c:2391
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr ""
@@ -2358,28 +2390,28 @@
 "Tắt lời nhắn này bằng cách chạy\n"
 "\"git config advice.graftFileDeprecated false\""
 
-#: commit.c:1168
+#: commit.c:1172
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 "Lần chuyển giao %s có một chữ ký GPG không đáng tin, được cho là bởi %s."
 
-#: commit.c:1172
+#: commit.c:1176
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "Lần chuyển giao %s có một chữ ký GPG sai, được cho là bởi %s."
 
-#: commit.c:1175
+#: commit.c:1179
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Lần chuyển giao %s không có chữ ký GPG."
 
-#: commit.c:1178
+#: commit.c:1182
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "Lần chuyển giao %s có một chữ ký GPG tốt bởi %s\n"
 
-#: commit.c:1432
+#: commit.c:1436
 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"
@@ -2569,7 +2601,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:1533 builtin/pack-objects.c:3542
+#: config.c:1533 builtin/pack-objects.c:3617
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "mức nén gói %d không hợp lệ"
@@ -2718,72 +2750,81 @@
 msgid "server doesn't support '%s'"
 msgstr "máy chủ không hỗ trợ “%s”"
 
-#: connect.c:103
+#: connect.c:118
 #, c-format
 msgid "server doesn't support feature '%s'"
 msgstr "máy chủ không hỗ trợ tính năng “%s”"
 
-#: connect.c:114
+#: connect.c:129
 msgid "expected flush after capabilities"
 msgstr "cần đẩy dữ liệu lên đĩa sau các capabilities"
 
-#: connect.c:233
+#: connect.c:263
 #, c-format
 msgid "ignoring capabilities after first line '%s'"
 msgstr "bỏ qua capabilities sau dòng đầu tiên “%s”"
 
-#: connect.c:252
+#: connect.c:284
 msgid "protocol error: unexpected capabilities^{}"
 msgstr "lỗi giao thức: không cần capabilities^{}"
 
-#: connect.c:273
+#: connect.c:306
 #, c-format
 msgid "protocol error: expected shallow sha-1, got '%s'"
 msgstr "lỗi giao thức: cần sha-1 shallow, nhưng lại nhận được “%s”"
 
-#: connect.c:275
+#: connect.c:308
 msgid "repository on the other end cannot be shallow"
 msgstr "kho đã ở điểm cuối khoác nên không thể được shallow"
 
-#: connect.c:313
+#: connect.c:347
 msgid "invalid packet"
 msgstr "gói không hợp lệ"
 
-#: connect.c:333
+#: connect.c:367
 #, c-format
 msgid "protocol error: unexpected '%s'"
 msgstr "lỗi giao thức: không cần “%s”"
 
-#: connect.c:441
+#: connect.c:473
+#, c-format
+msgid "unknown object format '%s' specified by server"
+msgstr "không hiểu định dạng đối tượng '%s' được chỉ định bởi máy phục vụ"
+
+#: connect.c:500
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "trả về của ls-refs không hợp lệ: %s"
 
-#: connect.c:445
+#: connect.c:504
 msgid "expected flush after ref listing"
 msgstr "cần đẩy dữ liệu lên đĩa sau khi liệt kê tham chiếu"
 
-#: connect.c:544
+#: connect.c:507
+msgid "expected response end packet after ref listing"
+msgstr "cần nhận được trả lời là kết thúc gói sau khi liệt kê tham chiếu"
+
+#: connect.c:640
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "giao thức “%s” chưa được hỗ trợ"
 
-#: connect.c:595
+#: connect.c:691
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "không thể đặt SO_KEEPALIVE trên ổ cắm"
 
-#: connect.c:635 connect.c:698
+#: connect.c:731 connect.c:794
 #, c-format
 msgid "Looking up %s ... "
 msgstr "Đang tìm kiếm %s … "
 
-#: connect.c:639
+#: connect.c:735
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "không tìm được %s (cổng %s) (%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:643 connect.c:714
+#: connect.c:739 connect.c:810
 #, c-format
 msgid ""
 "done.\n"
@@ -2792,7 +2833,7 @@
 "xong.\n"
 "Đang kết nối đến %s (cổng %s) … "
 
-#: connect.c:665 connect.c:742
+#: connect.c:761 connect.c:838
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2802,73 +2843,73 @@
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:671 connect.c:748
+#: connect.c:767 connect.c:844
 msgid "done."
 msgstr "hoàn tất."
 
-#: connect.c:702
+#: connect.c:798
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "không thể tìm thấy %s (%s)"
 
-#: connect.c:708
+#: connect.c:804
 #, c-format
 msgid "unknown port %s"
 msgstr "không hiểu cổng %s"
 
-#: connect.c:845 connect.c:1175
+#: connect.c:941 connect.c:1271
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "đã khóa tên máy lạ “%s”"
 
-#: connect.c:847
+#: connect.c:943
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "đã khóa cổng lạ “%s”"
 
-#: connect.c:857
+#: connect.c:953
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "không thể khởi chạy ủy nhiệm “%s”"
 
-#: connect.c:928
+#: connect.c:1024
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr "chưa chỉ định đường dẫn; xem'git help pull” để biết cú pháp url hợp lệ"
 
-#: connect.c:1123
+#: connect.c:1219
 msgid "ssh variant 'simple' does not support -4"
 msgstr "ssh biến thể “simple” không hỗ trợ -4"
 
-#: connect.c:1135
+#: connect.c:1231
 msgid "ssh variant 'simple' does not support -6"
 msgstr "ssh biến thể “simple” không hỗ trợ -6"
 
-#: connect.c:1152
+#: connect.c:1248
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "ssh biến thể “simple” không hỗ trợ đặt cổng"
 
-#: connect.c:1264
+#: connect.c:1360
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "đã khóa tên đường dẫn lạ “%s”"
 
-#: connect.c:1311
+#: connect.c:1407
 msgid "unable to fork"
 msgstr "không thể rẽ nhánh tiến trình con"
 
-#: connected.c:107 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:109 builtin/fsck.c:209 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "Đang kiểm tra kết nối"
 
-#: connected.c:119
+#: connected.c:121
 msgid "Could not run 'git rev-list'"
 msgstr "Không thể chạy “git rev-list”"
 
-#: connected.c:139
+#: connected.c:141
 msgid "failed write to rev-list"
 msgstr "gặp lỗi khi ghi vào rev-list"
 
-#: connected.c:146
+#: connected.c:148
 msgid "failed to close rev-list's stdin"
 msgstr "gặp lỗi khi đóng đầu vào chuẩn stdin của rev-list"
 
@@ -3123,17 +3164,17 @@
 "Không phải là một thư mục git. Dùng --no-index để so sánh hai đường dẫn bên "
 "ngoài một cây làm việc"
 
-#: diff.c:155
+#: diff.c:156
 #, c-format
 msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
 msgstr "  Gặp lỗi khi phân tích dirstat cắt bỏ phần trăm “%s”\n"
 
-#: diff.c:160
+#: diff.c:161
 #, c-format
 msgid "  Unknown dirstat parameter '%s'\n"
 msgstr "  Không hiểu đối số dirstat “%s”\n"
 
-#: diff.c:296
+#: diff.c:297
 msgid ""
 "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
 "'dimmed-zebra', 'plain'"
@@ -3141,7 +3182,7 @@
 "cài đặt màu đã di chuyển phải là một trong “no”, “default”, “blocks”, "
 "“zebra”, “dimmed_zebra”, “plain”"
 
-#: diff.c:324
+#: diff.c:325
 #, c-format
 msgid ""
 "unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', "
@@ -3151,7 +3192,7 @@
 "change”, “ignore-space-at-eol”, “ignore-all-space”, “allow-indentation-"
 "change”"
 
-#: diff.c:332
+#: diff.c:333
 msgid ""
 "color-moved-ws: allow-indentation-change cannot be combined with other "
 "whitespace modes"
@@ -3159,12 +3200,12 @@
 "color-moved-ws: allow-indentation-change không thể tổ hợp cùng với các chế "
 "độ khoảng trắng khác"
 
-#: diff.c:405
+#: diff.c:410
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
 msgstr "Không hiểu giá trị cho biến cấu hình “diff.submodule”: “%s”"
 
-#: diff.c:465
+#: diff.c:470
 #, c-format
 msgid ""
 "Found errors in 'diff.dirstat' config variable:\n"
@@ -3173,35 +3214,35 @@
 "Tìm thấy các lỗi trong biến cấu hình “diff.dirstat”:\n"
 "%s"
 
-#: diff.c:4238
+#: diff.c:4243
 #, 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:4583
+#: diff.c:4589
 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:4586
+#: diff.c:4592
 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:4664
+#: diff.c:4670
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow cần chính xác một đặc tả đường dẫn"
 
-#: diff.c:4712
+#: diff.c:4718
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "giá trị --stat không hợp lệ: “%s”"
 
-#: diff.c:4717 diff.c:4722 diff.c:4727 diff.c:4732 diff.c:5245
+#: diff.c:4723 diff.c:4728 diff.c:4733 diff.c:4738 diff.c:5250
 #: parse-options.c:197 parse-options.c:201
 #, 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:4749
+#: diff.c:4755
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3210,42 +3251,42 @@
 "Gặp lỗi khi phân tích đối số tùy chọn --dirstat/-X:\n"
 "%s"
 
-#: diff.c:4834
+#: diff.c:4840
 #, 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:4858
+#: diff.c:4864
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "không hiểu giá trị sau ws-error-highlight=%.*s"
 
-#: diff.c:4872
+#: diff.c:4878
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "không thể phân giải “%s”"
 
-#: diff.c:4922 diff.c:4928
+#: diff.c:4928 diff.c:4934
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s cần dạng <n>/<m>"
 
-#: diff.c:4940
+#: diff.c:4946
 #, 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:4961
+#: diff.c:4967
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "đối số --color-moved sai: %s"
 
-#: diff.c:4980
+#: diff.c:4986
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "chế độ “%s” không hợp lệ trong --color-moved-ws"
 
-#: diff.c:5020
+#: diff.c:5026
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
@@ -3253,150 +3294,150 @@
 "tùy chọn  diff-algorithm chấp nhận \"myers\", \"minimal\", \"patience\" và "
 "\"histogram\""
 
-#: diff.c:5056 diff.c:5076
+#: diff.c:5062 diff.c:5082
 #, c-format
 msgid "invalid argument to %s"
 msgstr "tham số cho %s không hợp lệ"
 
-#: diff.c:5214
+#: diff.c:5219
 #, 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:5270
+#: diff.c:5275
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "đối số --word-diff sai: %s"
 
-#: diff.c:5293
+#: diff.c:5298
 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:5295 diff.c:5301
+#: diff.c:5300 diff.c:5306
 msgid "generate patch"
 msgstr "tạo miếng vá"
 
-#: diff.c:5298 builtin/log.c:177
+#: diff.c:5303 builtin/log.c:177
 msgid "suppress diff output"
 msgstr "chặn mọi kết xuất từ diff"
 
-#: diff.c:5303 diff.c:5417 diff.c:5424
+#: diff.c:5308 diff.c:5422 diff.c:5429
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5304 diff.c:5307
+#: diff.c:5309 diff.c:5312
 msgid "generate diffs with <n> lines context"
 msgstr "tạo khác biệt với <n> dòng ngữ cảnh"
 
-#: diff.c:5309
+#: diff.c:5314
 msgid "generate the diff in raw format"
 msgstr "tạo khác biệt ở định dạng thô"
 
-#: diff.c:5312
+#: diff.c:5317
 msgid "synonym for '-p --raw'"
 msgstr "đồng nghĩa với “-p --raw”"
 
-#: diff.c:5316
+#: diff.c:5321
 msgid "synonym for '-p --stat'"
 msgstr "đồng nghĩa với “-p --stat”"
 
-#: diff.c:5320
+#: diff.c:5325
 msgid "machine friendly --stat"
 msgstr "--stat thuận tiện cho máy đọc"
 
-#: diff.c:5323
+#: diff.c:5328
 msgid "output only the last line of --stat"
 msgstr "chỉ xuất những dòng cuối của --stat"
 
-#: diff.c:5325 diff.c:5333
+#: diff.c:5330 diff.c:5338
 msgid "<param1,param2>..."
 msgstr "<tham_số_1,tham_số_2>…"
 
-#: diff.c:5326
+#: diff.c:5331
 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:5330
+#: diff.c:5335
 msgid "synonym for --dirstat=cumulative"
 msgstr "đồng nghĩa với --dirstat=cumulative"
 
-#: diff.c:5334
+#: diff.c:5339
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "đồng nghĩa với --dirstat=files,param1,param2…"
 
-#: diff.c:5338
+#: diff.c:5343
 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:5341
+#: diff.c:5346
 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:5344
+#: diff.c:5349
 msgid "show only names of changed files"
 msgstr "chỉ hiển thị tên của các tập tin đổi"
 
-#: diff.c:5347
+#: diff.c:5352
 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:5349
+#: diff.c:5354
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<rộng>[,<name-width>[,<số-lượng>]]"
 
-#: diff.c:5350
+#: diff.c:5355
 msgid "generate diffstat"
 msgstr "tạo diffstat"
 
-#: diff.c:5352 diff.c:5355 diff.c:5358
+#: diff.c:5357 diff.c:5360 diff.c:5363
 msgid "<width>"
 msgstr "<rộng>"
 
-#: diff.c:5353
+#: diff.c:5358
 msgid "generate diffstat with a given width"
 msgstr "tạo diffstat với độ rộng đã cho"
 
-#: diff.c:5356
+#: diff.c:5361
 msgid "generate diffstat with a given name width"
 msgstr "tạo diffstat với tên độ rộng đã cho"
 
-#: diff.c:5359
+#: diff.c:5364
 msgid "generate diffstat with a given graph width"
 msgstr "tạo diffstat với độ rộng đồ thị đã cho"
 
-#: diff.c:5361
+#: diff.c:5366
 msgid "<count>"
 msgstr "<số_lượng>"
 
-#: diff.c:5362
+#: diff.c:5367
 msgid "generate diffstat with limited lines"
 msgstr "tạo diffstat với các dòng bị giới hạn"
 
-#: diff.c:5365
+#: diff.c:5370
 msgid "generate compact summary in diffstat"
 msgstr "tạo tổng hợp xúc tích trong diffstat"
 
-#: diff.c:5368
+#: diff.c:5373
 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:5371
+#: diff.c:5376
 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:5373
+#: diff.c:5378
 msgid "show colored diff"
 msgstr "hiển thị thay đổi được tô màu"
 
-#: diff.c:5374
+#: diff.c:5379
 msgid "<kind>"
 msgstr "<kiểu>"
 
-#: diff.c:5375
+#: diff.c:5380
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
@@ -3404,7 +3445,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:5378
+#: diff.c:5383
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3412,89 +3453,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:5381 diff.c:5384 diff.c:5387 diff.c:5493
+#: diff.c:5386 diff.c:5389 diff.c:5392 diff.c:5498
 msgid "<prefix>"
 msgstr "<tiền_tố>"
 
-#: diff.c:5382
+#: diff.c:5387
 msgid "show the given source prefix instead of \"a/\""
 msgstr "hiển thị tiền tố nguồn đã cho thay cho \"a/\""
 
-#: diff.c:5385
+#: diff.c:5390
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "hiển thị tiền tố đích đã cho thay cho \"b/\""
 
-#: diff.c:5388
+#: diff.c:5393
 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:5391
+#: diff.c:5396
 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:5394
+#: diff.c:5399
 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:5398 diff.c:5403 diff.c:5408
+#: diff.c:5403 diff.c:5408 diff.c:5413
 msgid "<char>"
 msgstr "<ký_tự>"
 
-#: diff.c:5399
+#: diff.c:5404
 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:5404
+#: diff.c:5409
 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:5409
+#: diff.c:5414
 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:5412
+#: diff.c:5417
 msgid "Diff rename options"
 msgstr "Tùy chọn khác biệt đổi tên"
 
-#: diff.c:5413
+#: diff.c:5418
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5414
+#: diff.c:5419
 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:5418
+#: diff.c:5423
 msgid "detect renames"
 msgstr "dò tìm các tên thay đổi"
 
-#: diff.c:5422
+#: diff.c:5427
 msgid "omit the preimage for deletes"
 msgstr "bỏ qua preimage (tiền ảnh??) cho các việc xóa"
 
-#: diff.c:5425
+#: diff.c:5430
 msgid "detect copies"
 msgstr "dò bản sao"
 
-#: diff.c:5429
+#: diff.c:5434
 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:5431
+#: diff.c:5436
 msgid "disable rename detection"
 msgstr "tắt dò tìm đổi tên"
 
-#: diff.c:5434
+#: diff.c:5439
 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:5436
+#: diff.c:5441
 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:5439
+#: diff.c:5444
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
@@ -3502,156 +3543,156 @@
 "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:5441
+#: diff.c:5446
 msgid "Diff algorithm options"
 msgstr "Tùy chọn thuật toán khác biệt"
 
-#: diff.c:5443
+#: diff.c:5448
 msgid "produce the smallest possible diff"
 msgstr "sản sinh khác biệt ít nhất có thể"
 
-#: diff.c:5446
+#: diff.c:5451
 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:5449
+#: diff.c:5454
 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:5452
+#: diff.c:5457
 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:5455
+#: diff.c:5460
 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:5458
+#: diff.c:5463
 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:5461
+#: diff.c:5466
 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:5464
+#: diff.c:5469
 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:5468
+#: diff.c:5473
 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:5470
+#: diff.c:5475
 msgid "<algorithm>"
 msgstr "<thuật toán>"
 
-#: diff.c:5471
+#: diff.c:5476
 msgid "choose a diff algorithm"
 msgstr "chọn một thuật toán khác biệt"
 
-#: diff.c:5473
+#: diff.c:5478
 msgid "<text>"
 msgstr "<văn bản>"
 
-#: diff.c:5474
+#: diff.c:5479
 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:5476 diff.c:5485 diff.c:5488
+#: diff.c:5481 diff.c:5490 diff.c:5493
 msgid "<mode>"
 msgstr "<chế độ>"
 
-#: diff.c:5477
+#: diff.c:5482
 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:5479 diff.c:5482 diff.c:5527
+#: diff.c:5484 diff.c:5487 diff.c:5532
 msgid "<regex>"
 msgstr "<regex>"
 
-#: diff.c:5480
+#: diff.c:5485
 msgid "use <regex> to decide what a word is"
 msgstr "dùng <regex> để quyết định từ là cái gì"
 
-#: diff.c:5483
+#: diff.c:5488
 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:5486
+#: diff.c:5491
 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:5489
+#: diff.c:5494
 msgid "how white spaces are ignored in --color-moved"
 msgstr "cách bỏ qua khoảng trắng trong --color-moved"
 
-#: diff.c:5492
+#: diff.c:5497
 msgid "Other diff options"
 msgstr "Các tùy chọn khác biệt khác"
 
-#: diff.c:5494
+#: diff.c:5499
 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:5498
+#: diff.c:5503
 msgid "treat all files as text"
 msgstr "coi mọi tập tin là dạng văn bản thường"
 
-#: diff.c:5500
+#: diff.c:5505
 msgid "swap two inputs, reverse the diff"
 msgstr "tráo đổi hai đầu vào, đảo ngược khác biệt"
 
-#: diff.c:5502
+#: diff.c:5507
 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:5504
+#: diff.c:5509
 msgid "disable all output of the program"
 msgstr "tắt mọi kết xuất của chương trình"
 
-#: diff.c:5506
+#: diff.c:5511
 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:5508
+#: diff.c:5513
 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:5510
+#: diff.c:5515
 msgid "<when>"
 msgstr "<khi>"
 
-#: diff.c:5511
+#: diff.c:5516
 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:5514
+#: diff.c:5519
 msgid "<format>"
 msgstr "<định dạng>"
 
-#: diff.c:5515
+#: diff.c:5520
 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:5519
+#: diff.c:5524
 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:5522
+#: diff.c:5527
 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:5524
+#: diff.c:5529
 msgid "<string>"
 msgstr "<chuỗi>"
 
-#: diff.c:5525
+#: diff.c:5530
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
@@ -3659,7 +3700,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:5528
+#: diff.c:5533
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
@@ -3667,23 +3708,23 @@
 "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:5531
+#: diff.c:5536
 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:5534
+#: diff.c:5539
 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:5537
+#: diff.c:5542
 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:5538
+#: diff.c:5543
 msgid "<object-id>"
 msgstr "<mã-số-đối-tượng>"
 
-#: diff.c:5539
+#: diff.c:5544
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
@@ -3691,33 +3732,33 @@
 "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:5541
+#: diff.c:5546
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)…[*]]"
 
-#: diff.c:5542
+#: diff.c:5547
 msgid "select files by diff type"
 msgstr "chọn các tập tin theo kiểu khác biệt"
 
-#: diff.c:5544
+#: diff.c:5549
 msgid "<file>"
 msgstr "<tập_tin>"
 
-#: diff.c:5545
+#: diff.c:5550
 msgid "Output to a specific file"
 msgstr "Xuất ra một tập tin cụ thể"
 
-#: diff.c:6200
+#: diff.c:6205
 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:6203
+#: diff.c:6208
 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:6206
+#: diff.c:6211
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3734,59 +3775,59 @@
 msgid "Performing inexact rename detection"
 msgstr "Đang thực hiện dò tìm đổi tên không chính xác"
 
-#: dir.c:555
+#: dir.c:573
 #, 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:695 dir.c:724 dir.c:737
+#: dir.c:713 dir.c:742 dir.c:755
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "mẫu không được thừa nhận: “%s”"
 
-#: dir.c:754 dir.c:768
+#: dir.c:772 dir.c:786
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "mẫu âm không được thừa nhận: “%s”"
 
-#: dir.c:786
+#: dir.c:804
 #, 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:796
+#: dir.c:814
 msgid "disabling cone pattern matching"
 msgstr "vô hiệu khớp mẫu nón"
 
-#: dir.c:1173
+#: dir.c:1191
 #, 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:2275
+#: dir.c:2296
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "không thể mở thư mục “%s”"
 
-#: dir.c:2575
+#: dir.c:2596
 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:2699
+#: dir.c:2720
 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:3481
+#: dir.c:3502
 #, 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:3526 dir.c:3531
+#: dir.c:3547 dir.c:3552
 #, c-format
 msgid "could not create directories for %s"
 msgstr "không thể tạo thư mục cho %s"
 
-#: dir.c:3560
+#: dir.c:3581
 #, 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”"
@@ -3796,11 +3837,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:178
+#: entry.c:177
 msgid "Filtering content"
 msgstr "Nội dung lọc"
 
-#: entry.c:479
+#: entry.c:478
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "không thể lấy thống kê tập tin “%s”"
@@ -3820,227 +3861,245 @@
 msgid "too many args to run %s"
 msgstr "quá nhiều tham số để chạy %s"
 
-#: fetch-pack.c:151
+#: fetch-pack.c:152
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: cần danh sách shallow"
 
-#: fetch-pack.c:154
+#: fetch-pack.c:155
 msgid "git fetch-pack: expected a flush packet after shallow list"
 msgstr "git fetch-pack: cần một gói đẩy sau danh sách shallow"
 
-#: fetch-pack.c:165
+#: fetch-pack.c:166
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack: cần ACK/NAK, nhưng lại nhận được một gói flush"
 
-#: fetch-pack.c:185
+#: fetch-pack.c:186
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack: cần ACK/NAK, nhưng lại nhận được “%s”"
 
-#: fetch-pack.c:196
+#: fetch-pack.c:197
 msgid "unable to write to remote"
 msgstr "không thể ghi lên máy phục vụ"
 
-#: fetch-pack.c:258
+#: fetch-pack.c:259
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc cần multi_ack_detailed"
 
-#: fetch-pack.c:357 fetch-pack.c:1364
+#: fetch-pack.c:358 fetch-pack.c:1408
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "dòng shallow không hợp lệ: %s"
 
-#: fetch-pack.c:363 fetch-pack.c:1370
+#: fetch-pack.c:364 fetch-pack.c:1414
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "dòng unshallow không hợp lệ: %s"
 
-#: fetch-pack.c:365 fetch-pack.c:1372
+#: fetch-pack.c:366 fetch-pack.c:1416
 #, c-format
 msgid "object not found: %s"
 msgstr "không tìm thấy đối tượng: %s"
 
-#: fetch-pack.c:368 fetch-pack.c:1375
+#: fetch-pack.c:369 fetch-pack.c:1419
 #, c-format
 msgid "error in object: %s"
 msgstr "lỗi trong đối tượng: %s"
 
-#: fetch-pack.c:370 fetch-pack.c:1377
+#: fetch-pack.c:371 fetch-pack.c:1421
 #, c-format
 msgid "no shallow found: %s"
 msgstr "không tìm shallow nào: %s"
 
-#: fetch-pack.c:373 fetch-pack.c:1381
+#: fetch-pack.c:374 fetch-pack.c:1425
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "cần shallow/unshallow, nhưng lại nhận được %s"
 
-#: fetch-pack.c:415
+#: fetch-pack.c:416
 #, c-format
 msgid "got %s %d %s"
 msgstr "nhận %s %d - %s"
 
-#: fetch-pack.c:432
+#: fetch-pack.c:433
 #, c-format
 msgid "invalid commit %s"
 msgstr "lần chuyển giao %s không hợp lệ"
 
-#: fetch-pack.c:463
+#: fetch-pack.c:464
 msgid "giving up"
 msgstr "chịu thua"
 
-#: fetch-pack.c:476 progress.c:336
+#: fetch-pack.c:477 progress.c:336
 msgid "done"
 msgstr "xong"
 
-#: fetch-pack.c:488
+#: fetch-pack.c:489
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "nhận %s (%d) %s"
 
-#: fetch-pack.c:534
+#: fetch-pack.c:535
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Đánh dấu %s là đã hoàn thành"
 
-#: fetch-pack.c:755
+#: fetch-pack.c:756
 #, c-format
 msgid "already have %s (%s)"
 msgstr "đã sẵn có %s (%s)"
 
-#: fetch-pack.c:819
+#: fetch-pack.c:821
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: không thể rẽ nhánh sideband demultiplexer"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:829
 msgid "protocol error: bad pack header"
 msgstr "lỗi giao thức: phần đầu gói bị sai"
 
-#: fetch-pack.c:901
+#: fetch-pack.c:910
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: không thể rẽ nhánh %s"
 
-#: fetch-pack.c:917
+#: fetch-pack.c:927
 #, c-format
 msgid "%s failed"
 msgstr "%s gặp lỗi"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:929
 msgid "error in sideband demultiplexer"
 msgstr "có lỗi trong sideband demultiplexer"
 
-#: fetch-pack.c:966
+#: fetch-pack.c:976
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Phiên bản máy chủ là %.*s"
 
-#: fetch-pack.c:971 fetch-pack.c:977 fetch-pack.c:980 fetch-pack.c:986
-#: fetch-pack.c:990 fetch-pack.c:994 fetch-pack.c:998 fetch-pack.c:1002
-#: fetch-pack.c:1006 fetch-pack.c:1010 fetch-pack.c:1014 fetch-pack.c:1018
-#: fetch-pack.c:1024 fetch-pack.c:1030 fetch-pack.c:1035 fetch-pack.c:1040
+#: fetch-pack.c:981 fetch-pack.c:987 fetch-pack.c:990 fetch-pack.c:996
+#: fetch-pack.c:1000 fetch-pack.c:1004 fetch-pack.c:1008 fetch-pack.c:1012
+#: fetch-pack.c:1016 fetch-pack.c:1020 fetch-pack.c:1024 fetch-pack.c:1028
+#: fetch-pack.c:1034 fetch-pack.c:1040 fetch-pack.c:1045 fetch-pack.c:1050
 #, c-format
 msgid "Server supports %s"
 msgstr "Máy chủ hỗ trợ %s"
 
-#: fetch-pack.c:973
+#: fetch-pack.c:983
 msgid "Server does not support shallow clients"
 msgstr "Máy chủ không hỗ trợ máy khách shallow"
 
-#: fetch-pack.c:1033
+#: fetch-pack.c:1043
 msgid "Server does not support --shallow-since"
 msgstr "Máy chủ không hỗ trợ --shallow-since"
 
-#: fetch-pack.c:1038
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-exclude"
 msgstr "Máy chủ không hỗ trợ --shallow-exclude"
 
-#: fetch-pack.c:1042
+#: fetch-pack.c:1052
 msgid "Server does not support --deepen"
 msgstr "Máy chủ không hỗ trợ --deepen"
 
-#: fetch-pack.c:1059
+#: fetch-pack.c:1054
+msgid "Server does not support this repository's object format"
+msgstr "Máy chủ không hỗ trợ định dạng đối tượng của kho này"
+
+#: fetch-pack.c:1071
 msgid "no common commits"
 msgstr "không có lần chuyển giao chung nào"
 
-#: fetch-pack.c:1071 fetch-pack.c:1563
+#: fetch-pack.c:1083 fetch-pack.c:1639
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: fetch gặp lỗi."
 
 #: fetch-pack.c:1211
+#, c-format
+msgid "mismatched algorithms: client %s; server %s"
+msgstr "các thuật toán không khớp nhau: máy khách %s; máy chủ %s"
+
+#: fetch-pack.c:1215
+#, c-format
+msgid "the server does not support algorithm '%s'"
+msgstr "máy chủ không hỗ trợ thuật toán “%s”"
+
+#: fetch-pack.c:1235
 msgid "Server does not support shallow requests"
 msgstr "Máy chủ không hỗ trợ yêu cầu shallow"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1242
 msgid "Server supports filter"
 msgstr "Máy chủ hỗ trợ bộ lọc"
 
-#: fetch-pack.c:1242
+#: fetch-pack.c:1286
 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ụ"
 
-#: fetch-pack.c:1260
+#: fetch-pack.c:1304
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "gặp lỗi khi đọc phần đầu của đoạn %s"
 
-#: fetch-pack.c:1266
+#: fetch-pack.c:1310
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "cần “%s”, nhưng lại nhận “%s”"
 
-#: fetch-pack.c:1327
+#: fetch-pack.c:1371
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "gặp dòng không được thừa nhận: “%s”"
 
-#: fetch-pack.c:1332
+#: fetch-pack.c:1376
 #, c-format
 msgid "error processing acks: %d"
 msgstr "gặp lỗi khi xử lý tín hiệu trả lời: %d"
 
-#: fetch-pack.c:1342
+#: fetch-pack.c:1386
 msgid "expected packfile to be sent after 'ready'"
 msgstr "cần tập tin gói để gửi sau “ready”"
 
-#: fetch-pack.c:1344
+#: fetch-pack.c:1388
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "không cần thêm phần nào để gửi sau “ready”"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1430
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "lỗi xử lý thông tin shallow: %d"
 
-#: fetch-pack.c:1433
+#: fetch-pack.c:1477
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "cần wanted-ref, nhưng lại nhận được “%s”"
 
-#: fetch-pack.c:1438
+#: fetch-pack.c:1482
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "wanted-ref không được mong đợi: “%s”"
 
-#: fetch-pack.c:1443
+#: fetch-pack.c:1487
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "lỗi khi xử lý wanted refs: %d"
 
-#: fetch-pack.c:1789
+#: fetch-pack.c:1517
+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:1921
 msgid "no matching remote head"
 msgstr "không khớp phần đầu máy chủ"
 
-#: fetch-pack.c:1812 builtin/clone.c:692
+#: fetch-pack.c:1944 builtin/clone.c:692
 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:1839
+#: fetch-pack.c:1971
 #, 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:1842
+#: fetch-pack.c:1974
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr ""
@@ -4077,7 +4136,7 @@
 msgid "'%s': unable to read %s"
 msgstr "“%s”: không thể đọc %s"
 
-#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:82
+#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:89
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
@@ -4218,16 +4277,16 @@
 "\n"
 "Những lệnh giống nhất là"
 
-#: help.c:653
+#: help.c:654
 msgid "git version [<options>]"
 msgstr "git version [<các tùy chọn>]"
 
-#: help.c:708
+#: help.c:709
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:712
+#: help.c:713
 msgid ""
 "\n"
 "Did you mean this?"
@@ -4323,6 +4382,10 @@
 msgid "multiple filter-specs cannot be combined"
 msgstr "không thể tổ hợp nhiều đặc tả kiểu lọc"
 
+#: list-objects-filter-options.c:330
+msgid "unable to upgrade repository format to support partial clone"
+msgstr "không thể nâng cấp định định dạng kho chứa để hỗ trợ nhân bản cục bộ"
+
 #: list-objects-filter.c:492
 #, c-format
 msgid "unable to access sparse blob in '%s'"
@@ -4693,7 +4756,7 @@
 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:3101 git-submodule.sh:985
+#: merge-recursive.c:3101 git-submodule.sh:959
 msgid "submodule"
 msgstr "mô-đun-con"
 
@@ -4820,7 +4883,7 @@
 msgstr "gặp lỗi khi đọc bộ nhớ đệm"
 
 #: merge.c:108 rerere.c:720 builtin/am.c:1878 builtin/am.c:1912
-#: builtin/checkout.c:559 builtin/checkout.c:824 builtin/clone.c:816
+#: builtin/checkout.c:559 builtin/checkout.c:822 builtin/clone.c:816
 #: builtin/stash.c:265
 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"
@@ -5069,21 +5132,21 @@
 msgid "hash mismatch %s"
 msgstr "mã băm không khớp %s"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2135
+#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2184
 #, c-format
 msgid "unable to get size of %s"
 msgstr "không thể lấy kích cỡ của %s"
 
-#: packfile.c:629
+#: packfile.c:630
 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:1899
+#: packfile.c:1900
 #, 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:1903
+#: packfile.c:1904
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
@@ -5289,44 +5352,48 @@
 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"
+
+#: pkt-line.c:113
 msgid "flush packet write failed"
 msgstr "gặp lỗi khi ghi vào tập tin gói lúc đẩy dữ liệu lên bộ nhớ"
 
-#: pkt-line.c:146 pkt-line.c:232
+#: pkt-line.c:153 pkt-line.c:239
 msgid "protocol error: impossibly long line"
 msgstr "lỗi giao thức: không thể làm được dòng dài"
 
-#: pkt-line.c:162 pkt-line.c:164
+#: pkt-line.c:169 pkt-line.c:171
 msgid "packet write with format failed"
 msgstr "gặp lỗi khi ghi gói có định dạng"
 
-#: pkt-line.c:196
+#: pkt-line.c:203
 msgid "packet write failed - data exceeds max packet size"
 msgstr "gặp lỗi khi ghi gói - dữ liệu vượt quá cỡ vói tối đa"
 
-#: pkt-line.c:203 pkt-line.c:210
+#: pkt-line.c:210 pkt-line.c:217
 msgid "packet write failed"
 msgstr "gặp lỗi khi ghi gói"
 
-#: pkt-line.c:295
+#: pkt-line.c:302
 msgid "read error"
 msgstr "lỗi đọc"
 
-#: pkt-line.c:303
+#: pkt-line.c:310
 msgid "the remote end hung up unexpectedly"
 msgstr "máy chủ bị treo bất ngờ"
 
-#: pkt-line.c:331
+#: pkt-line.c:338
 #, c-format
 msgid "protocol error: bad line length character: %.4s"
 msgstr "lỗi giao thức: ký tự chiều dài dòng bị sai: %.4s"
 
-#: pkt-line.c:341 pkt-line.c:346
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
 msgid "protocol error: bad line length %d"
 msgstr "lỗi giao thức: chiều dài dòng bị sai %d"
 
-#: pkt-line.c:362
+#: pkt-line.c:373
 #, c-format
 msgid "remote error: %s"
 msgstr "lỗi máy chủ: %s"
@@ -5506,7 +5573,7 @@
 
 #: read-cache.c:1983 read-cache.c:2271 rerere.c:565 rerere.c:599 rerere.c:1111
 #: submodule.c:1619 builtin/add.c:532 builtin/check-ignore.c:181
-#: builtin/checkout.c:488 builtin/checkout.c:676 builtin/clean.c:961
+#: builtin/checkout.c:488 builtin/checkout.c:674 builtin/clean.c:991
 #: builtin/commit.c:364 builtin/diff-tree.c:121 builtin/grep.c:507
 #: builtin/mv.c:145 builtin/reset.c:247 builtin/rm.c:290
 #: builtin/submodule--helper.c:332
@@ -5563,7 +5630,7 @@
 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:3026 strbuf.c:1176 wrapper.c:622 builtin/merge.c:1130
+#: read-cache.c:3026 strbuf.c:1171 wrapper.c:630 builtin/merge.c:1130
 #, c-format
 msgid "could not close '%s'"
 msgstr "không thể đóng “%s”"
@@ -5749,7 +5816,7 @@
 msgid "could not read '%s'."
 msgstr "không thể đọc “%s”."
 
-#: ref-filter.c:42 wt-status.c:1936
+#: ref-filter.c:42 wt-status.c:1977
 msgid "gone"
 msgstr "đã ra đi"
 
@@ -5975,7 +6042,7 @@
 msgid "ignoring ref with broken name %s"
 msgstr "đang lờ đi tham chiếu với tên hỏng %s"
 
-#: ref-filter.c:2095 refs.c:625
+#: ref-filter.c:2095 refs.c:657
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "đang lờ đi tham chiếu hỏng %s"
@@ -6005,94 +6072,108 @@
 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"
 
-#: refs.c:262
+#: refs.c:264
 #, c-format
 msgid "%s does not point to a valid object!"
 msgstr "“%s” không chỉ đến một lần chuyển giao hợp lệ nào cả!"
 
-#: refs.c:623
+#: refs.c:572
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr "không thể lấy về “%s”"
+
+#: refs.c:579
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "tên nhánh không hợp lệ: %s = %s"
+
+#: refs.c:655
 #, c-format
 msgid "ignoring dangling symref %s"
 msgstr "đang lờ đi tham chiếu mềm thừa %s"
 
-#: refs.c:760
+#: refs.c:792
 #, c-format
 msgid "could not open '%s' for writing: %s"
 msgstr "không thể mở “%s” để ghi: %s"
 
-#: refs.c:770 refs.c:821
+#: refs.c:802 refs.c:853
 #, c-format
 msgid "could not read ref '%s'"
 msgstr "không thể đọc tham chiếu “%s”"
 
-#: refs.c:776
+#: refs.c:808
 #, c-format
 msgid "ref '%s' already exists"
 msgstr "tham chiếu “%s” đã có từ trước rồi"
 
-#: refs.c:781
+#: refs.c:813
 #, c-format
 msgid "unexpected object ID when writing '%s'"
 msgstr "không cần ID đối tượng khi ghi “%s”"
 
-#: refs.c:789 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
-#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1173
-#: wrapper.c:620
+#: refs.c:821 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
+#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1168
+#: wrapper.c:628
 #, c-format
 msgid "could not write to '%s'"
 msgstr "không thể ghi vào “%s”"
 
-#: refs.c:816 strbuf.c:1171 wrapper.c:188 wrapper.c:358 builtin/am.c:719
+#: refs.c:848 strbuf.c:1166 wrapper.c:196 wrapper.c:366 builtin/am.c:719
 #: builtin/rebase.c:852
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "không thể mở “%s” để ghi"
 
-#: refs.c:823
+#: refs.c:855
 #, c-format
 msgid "unexpected object ID when deleting '%s'"
 msgstr "gặp ID đối tượng không cần khi xóa “%s”"
 
-#: refs.c:954
+#: refs.c:986
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr "nhật ký cho tham chiếu %s có khoảng trống sau %s"
 
-#: refs.c:960
+#: refs.c:992
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr "nhật ký cho tham chiếu %s kết thúc bất ngờ trên %s"
 
-#: refs.c:1019
+#: refs.c:1051
 #, c-format
 msgid "log for %s is empty"
 msgstr "nhật ký cho %s trống rỗng"
 
-#: refs.c:1111
+#: refs.c:1143
 #, c-format
 msgid "refusing to update ref with bad name '%s'"
 msgstr "từ chối cập nhật tham chiếu với tên sai “%s”"
 
-#: refs.c:1187
+#: refs.c:1219
 #, c-format
 msgid "update_ref failed for ref '%s': %s"
 msgstr "update_ref bị lỗi cho ref “%s”: %s"
 
-#: refs.c:1979
+#: refs.c:2011
 #, c-format
 msgid "multiple updates for ref '%s' not allowed"
 msgstr "không cho phép đa cập nhật cho tham chiếu “%s”"
 
-#: refs.c:2011
+#: refs.c:2098
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "cập nhật tham chiếu bị cấm trong môi trường kiểm tra"
 
-#: refs.c:2107 refs.c:2137
+#: refs.c:2109
+msgid "ref updates aborted by hook"
+msgstr "các cập nhật tham chiếu bị bãi bỏ bởi móc"
+
+#: refs.c:2209 refs.c:2239
 #, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr "“%s” sẵn có; không thể tạo “%s”"
 
-#: refs.c:2113 refs.c:2148
+#: refs.c:2215 refs.c:2250
 #, c-format
 msgid "cannot process '%s' and '%s' at the same time"
 msgstr "không thể xử lý “%s” và “%s” cùng một lúc"
@@ -6379,7 +6460,7 @@
 "  (dùng \"git pull\" để hòa trộn nhánh trên máy chủ vào trong nhánh của "
 "bạn)\n"
 
-#: remote.c:2233
+#: remote.c:2241
 #, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr "không thể phân tích tên đối tượng mong muốn “%s”"
@@ -6506,20 +6587,20 @@
 msgid "failed to find tree of %s"
 msgstr "gặp lỗi khi tìm cây của %s"
 
-#: revision.c:2655
+#: revision.c:2661
 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:2658
+#: revision.c:2664
 #, 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:2866
+#: revision.c:2873
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent xung khắc với --bisect"
 
-#: revision.c:2870
+#: revision.c:2877
 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"
 
@@ -6560,11 +6641,15 @@
 msgid "failed to sign the push certificate"
 msgstr "gặp lỗi khi ký chứng thực đẩy"
 
-#: send-pack.c:399
+#: send-pack.c:394
+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:403
 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:401
+#: send-pack.c:405
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
@@ -6572,11 +6657,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:413
+#: send-pack.c:417
 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:418
+#: send-pack.c:422
 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"
 
@@ -6697,7 +6782,7 @@
 msgid "unable to dequote value of '%s'"
 msgstr "không thể giải trích dẫn giá trị của “%s”"
 
-#: sequencer.c:785 wrapper.c:190 wrapper.c:360 builtin/am.c:710
+#: sequencer.c:785 wrapper.c:198 wrapper.c:368 builtin/am.c:710
 #: builtin/am.c:802 builtin/merge.c:1125 builtin/rebase.c:896
 #, c-format
 msgid "could not open '%s' for reading"
@@ -7544,84 +7629,84 @@
 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:569
+#: setup.c:604
 #, 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:577
+#: setup.c:612
 msgid "unknown repository extensions found:"
 msgstr "tìm thấy phần mở rộng kho chưa biết:"
 
-#: setup.c:596
+#: setup.c:631
 #, c-format
 msgid "error opening '%s'"
 msgstr "gặp lỗi khi mở “%s”"
 
-#: setup.c:598
+#: setup.c:633
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "tập tin .git là quá lớn: “%s”"
 
-#: setup.c:600
+#: setup.c:635
 #, c-format
 msgid "error reading %s"
 msgstr "gặp lỗi khi đọc %s"
 
-#: setup.c:602
+#: setup.c:637
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "định dạng tập tin git không hợp lệ: %s"
 
-#: setup.c:604
+#: setup.c:639
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "không có đường dẫn trong tập tin git: %s"
 
-#: setup.c:606
+#: setup.c:641
 #, c-format
 msgid "not a git repository: %s"
 msgstr "không phải là kho git: %s"
 
-#: setup.c:708
+#: setup.c:743
 #, c-format
 msgid "'$%s' too big"
 msgstr "“$%s” quá lớn"
 
-#: setup.c:722
+#: setup.c:757
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "không phải là kho git: “%s”"
 
-#: setup.c:751 setup.c:753 setup.c:784
+#: setup.c:786 setup.c:788 setup.c:819
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "không thể chdir (chuyển đổi thư mục) sang “%s”"
 
-#: setup.c:756 setup.c:812 setup.c:822 setup.c:861 setup.c:869
+#: setup.c:791 setup.c:847 setup.c:857 setup.c:896 setup.c:904
 msgid "cannot come back to cwd"
 msgstr "không thể quay lại cwd"
 
-#: setup.c:883
+#: setup.c:918
 #, 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:1121
+#: setup.c:1156
 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:1130 setup.c:1136
+#: setup.c:1165 setup.c:1171
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "không thể chuyển sang “%s”"
 
-#: setup.c:1141
+#: setup.c:1176
 #, 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:1147
+#: setup.c:1182
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -7631,7 +7716,7 @@
 "Dừng tại biên của hệ thống tập tin (GIT_DISCOVERY_ACROSS_FILESYSTEM chưa "
 "đặt)."
 
-#: setup.c:1258
+#: setup.c:1293
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -7640,15 +7725,15 @@
 "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:1304
+#: setup.c:1340
 msgid "open /dev/null or dup failed"
 msgstr "gặp lỗi khi mở “/dev/null” hay dup"
 
-#: setup.c:1319
+#: setup.c:1355
 msgid "fork failed"
 msgstr "gặp lỗi khi rẽ nhánh tiến trình"
 
-#: setup.c:1324
+#: setup.c:1360
 msgid "setsid failed"
 msgstr "setsid gặp lỗi"
 
@@ -7830,7 +7915,7 @@
 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"
 
-#: sha1-file.c:1906 builtin/pack-objects.c:1055
+#: sha1-file.c:1906 builtin/pack-objects.c:1085
 #, c-format
 msgid "failed utime() on %s"
 msgstr "gặp lỗi utime() trên “%s”"
@@ -8008,56 +8093,56 @@
 msgstr "'%.*s' không phải là tên đối tượng hợp lệ"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
-#: strbuf.c:853
+#: strbuf.c:848
 #, c-format
 msgid "%u.%2.2u GiB"
 msgstr "%u.%2.2u GiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
-#: strbuf.c:855
+#: strbuf.c:850
 #, c-format
 msgid "%u.%2.2u GiB/s"
 msgstr "%u.%2.2u GiB/giây"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte
-#: strbuf.c:863
+#: strbuf.c:858
 #, c-format
 msgid "%u.%2.2u MiB"
 msgstr "%u.%2.2u MiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
-#: strbuf.c:865
+#: strbuf.c:860
 #, c-format
 msgid "%u.%2.2u MiB/s"
 msgstr "%u.%2.2u MiB/giây"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte
-#: strbuf.c:872
+#: strbuf.c:867
 #, c-format
 msgid "%u.%2.2u KiB"
 msgstr "%u.%2.2u KiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
-#: strbuf.c:874
+#: strbuf.c:869
 #, c-format
 msgid "%u.%2.2u KiB/s"
 msgstr "%u.%2.2u KiB/giây"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte
-#: strbuf.c:880
+#: strbuf.c:875
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte/second
-#: strbuf.c:882
+#: strbuf.c:877
 #, c-format
 msgid "%u byte/s"
 msgid_plural "%u bytes/s"
 msgstr[0] "%u byte/giây"
 
-#: strbuf.c:1180
+#: strbuf.c:1175
 #, c-format
 msgid "could not edit '%s'"
 msgstr "không thể sửa “%s”"
@@ -8307,7 +8392,7 @@
 msgid "could not read from stdin"
 msgstr "không thể đọc từ đầu vào tiêu chuẩn"
 
-#: trailer.c:1011 wrapper.c:665
+#: trailer.c:1011 wrapper.c:673
 #, c-format
 msgid "could not stat %s"
 msgstr "không thể lấy thông tin thống kê về %s"
@@ -8331,20 +8416,20 @@
 msgid "could not rename temporary file to %s"
 msgstr "không thể đổi tên tập tin tạm thời thành %s"
 
-#: transport-helper.c:61 transport-helper.c:90
+#: transport-helper.c:62 transport-helper.c:91
 msgid "full write to remote helper failed"
 msgstr "ghi đầy đủ lên bộ hỗ trợ máy chủ gặp lỗi"
 
-#: transport-helper.c:144
+#: transport-helper.c:145
 #, c-format
 msgid "unable to find remote helper for '%s'"
 msgstr "không thể tìm thấy bộ hỗ trợ máy chủ cho “%s”"
 
-#: transport-helper.c:160 transport-helper.c:571
+#: transport-helper.c:161 transport-helper.c:575
 msgid "can't dup helper output fd"
 msgstr "không thể nhân đôi fd dầu ra bộ hỗ trợ"
 
-#: transport-helper.c:211
+#: transport-helper.c:214
 #, c-format
 msgid ""
 "unknown mandatory capability %s; this remote helper probably needs newer "
@@ -8353,158 +8438,163 @@
 "không hiểu capability bắt buộc %s; bộ hỗ trợ máy chủ này gần như chắc chắn "
 "là cần phiên bản Git mới hơn"
 
-#: transport-helper.c:217
+#: transport-helper.c:220
 msgid "this remote helper should implement refspec capability"
 msgstr "bộ hỗ trợ máy chủ này cần phải thực thi capability đặc tả tham chiếu"
 
-#: transport-helper.c:284 transport-helper.c:425
+#: transport-helper.c:287 transport-helper.c:429
 #, c-format
 msgid "%s unexpectedly said: '%s'"
 msgstr "%s said bất ngờ: “%s”"
 
-#: transport-helper.c:414
+#: transport-helper.c:417
 #, c-format
 msgid "%s also locked %s"
 msgstr "%s cũng khóa %s"
 
-#: transport-helper.c:493
+#: transport-helper.c:497
 msgid "couldn't run fast-import"
 msgstr "không thể chạy fast-import"
 
-#: transport-helper.c:516
+#: transport-helper.c:520
 msgid "error while running fast-import"
 msgstr "gặp lỗi trong khi chạy fast-import"
 
-#: transport-helper.c:545 transport-helper.c:1135
+#: transport-helper.c:549 transport-helper.c:1156
 #, c-format
 msgid "could not read ref %s"
 msgstr "không thể đọc tham chiếu %s"
 
-#: transport-helper.c:590
+#: transport-helper.c:594
 #, c-format
 msgid "unknown response to connect: %s"
 msgstr "không hiểu đáp ứng để kết nối: %s"
 
-#: transport-helper.c:612
+#: transport-helper.c:616
 msgid "setting remote service path not supported by protocol"
 msgstr "giao thức này không hỗ trợ cài đặt đường dẫn dịch vụ máy chủ"
 
-#: transport-helper.c:614
+#: transport-helper.c:618
 msgid "invalid remote service path"
 msgstr "đường dẫn dịch vụ máy chủ không hợp lệ"
 
-#: transport-helper.c:657 transport.c:1339
+#: transport-helper.c:661 transport.c:1347
 msgid "operation not supported by protocol"
 msgstr "thao tác không được gia thức hỗ trợ"
 
-#: transport-helper.c:660
+#: transport-helper.c:664
 #, c-format
 msgid "can't connect to subservice %s"
 msgstr "không thể kết nối đến dịch vụ phụ %s"
 
-#: transport-helper.c:736
+#: transport-helper.c:740
 #, c-format
 msgid "expected ok/error, helper said '%s'"
 msgstr "cần ok/error, nhưng bộ hỗ trợ lại nói “%s”"
 
-#: transport-helper.c:789
+#: transport-helper.c:793
 #, c-format
 msgid "helper reported unexpected status of %s"
 msgstr "bộ hỗ trợ báo cáo rằng không cần tình trạng của %s"
 
-#: transport-helper.c:850
+#: transport-helper.c:854
 #, c-format
 msgid "helper %s does not support dry-run"
 msgstr "helper %s không hỗ trợ dry-run"
 
-#: transport-helper.c:853
+#: transport-helper.c:857
 #, c-format
 msgid "helper %s does not support --signed"
 msgstr "helper %s không hỗ trợ --signed"
 
-#: transport-helper.c:856
+#: transport-helper.c:860
 #, c-format
 msgid "helper %s does not support --signed=if-asked"
 msgstr "helper %s không hỗ trợ --signed=if-asked"
 
-#: transport-helper.c:861
+#: transport-helper.c:865
 #, c-format
 msgid "helper %s does not support --atomic"
 msgstr "helper %s không hỗ trợ --atomic"
 
-#: transport-helper.c:867
+#: transport-helper.c:871
 #, c-format
 msgid "helper %s does not support 'push-option'"
 msgstr "helper %s không hỗ trợ “push-option”"
 
-#: transport-helper.c:966
+#: transport-helper.c:970
 msgid "remote-helper doesn't support push; refspec needed"
 msgstr "remote-helper không hỗ trợ push; cần đặc tả tham chiếu"
 
-#: transport-helper.c:971
+#: transport-helper.c:975
 #, c-format
 msgid "helper %s does not support 'force'"
 msgstr "helper %s không hỗ trợ “force”"
 
-#: transport-helper.c:1018
+#: transport-helper.c:1022
 msgid "couldn't run fast-export"
 msgstr "không thể chạy fast-export"
 
-#: transport-helper.c:1023
+#: transport-helper.c:1027
 msgid "error while running fast-export"
 msgstr "gặp lỗi trong khi chạy fast-export"
 
-#: transport-helper.c:1048
+#: transport-helper.c:1052
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
-"Perhaps you should specify a branch such as 'master'.\n"
+"Perhaps you should specify a branch.\n"
 msgstr ""
 "Không có các tham chiếu trong phần chung và chưa chỉ định; nên không làm gì "
 "cả.\n"
-"Tuy nhiên bạn nên chỉ định một nhánh như “master” chẳng hạn.\n"
+"Tuy nhiên bạn nên chỉ định một nhánh.\n"
 
-#: transport-helper.c:1121
+#: transport-helper.c:1133
+#, c-format
+msgid "unsupported object format '%s'"
+msgstr "không hỗ trợ định dạng đối tượng “%s”"
+
+#: transport-helper.c:1142
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "đáp ứng sai dạng trong danh sách tham chiếu: %s"
 
-#: transport-helper.c:1273
+#: transport-helper.c:1294
 #, c-format
 msgid "read(%s) failed"
 msgstr "read(%s) gặp lỗi"
 
-#: transport-helper.c:1300
+#: transport-helper.c:1321
 #, c-format
 msgid "write(%s) failed"
 msgstr "write(%s) gặp lỗi"
 
-#: transport-helper.c:1349
+#: transport-helper.c:1370
 #, c-format
 msgid "%s thread failed"
 msgstr "tuyến trình %s gặp lỗi"
 
-#: transport-helper.c:1353
+#: transport-helper.c:1374
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "tuyến trình %s gặp lỗi khi gia nhập: %s"
 
-#: transport-helper.c:1372 transport-helper.c:1376
+#: transport-helper.c:1393 transport-helper.c:1397
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "không thể khởi chạy tuyến trình để sao chép dữ liệu: %s"
 
-#: transport-helper.c:1413
+#: transport-helper.c:1434
 #, c-format
 msgid "%s process failed to wait"
 msgstr "xử lý %s gặp lỗi khi đợi"
 
-#: transport-helper.c:1417
+#: transport-helper.c:1438
 #, c-format
 msgid "%s process failed"
 msgstr "xử lý %s gặp lỗi"
 
-#: transport-helper.c:1435 transport-helper.c:1444
+#: transport-helper.c:1456 transport-helper.c:1465
 msgid "can't start thread for copying data"
 msgstr "không thể khởi chạy tuyến trình cho việc chép dữ liệu"
 
@@ -8518,33 +8608,33 @@
 msgid "could not read bundle '%s'"
 msgstr "không thể đọc bó “%s”"
 
-#: transport.c:214
+#: transport.c:220
 #, 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:266
+#: transport.c:272
 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:267
+#: transport.c:273
 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:632
+#: transport.c:631
 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:705
+#: transport.c:704
 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:839
+#: transport.c:838
 #, 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:905
+#: transport.c:904
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "không cho phép phương thức vận chuyển “%s”"
@@ -8553,7 +8643,7 @@
 msgid "git-over-rsync is no longer supported"
 msgstr "git-over-rsync không còn được hỗ trợ nữa"
 
-#: transport.c:1052
+#: transport.c:1059
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -8562,7 +8652,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:1056
+#: transport.c:1063
 #, c-format
 msgid ""
 "\n"
@@ -8589,11 +8679,11 @@
 "để đẩy chúng lên máy phục vụ.\n"
 "\n"
 
-#: transport.c:1064
+#: transport.c:1071
 msgid "Aborting."
 msgstr "Bãi bỏ."
 
-#: transport.c:1209
+#: transport.c:1216
 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"
 
@@ -8883,7 +8973,7 @@
 msgid "Updating index flags"
 msgstr "Đang cập nhật các cờ mục lục"
 
-#: upload-pack.c:1337
+#: upload-pack.c:1415
 msgid "expected flush after fetch arguments"
 msgstr "cần đẩy dữ liệu lên đĩa sau các tham số của lệnh fetch"
 
@@ -8920,48 +9010,48 @@
 msgid "Fetching objects"
 msgstr "Đang lấy về các đối tượng"
 
-#: worktree.c:262 builtin/am.c:2098
+#: worktree.c:248 builtin/am.c:2098
 #, c-format
 msgid "failed to read '%s'"
 msgstr "gặp lỗi khi đọc “%s”"
 
-#: worktree.c:309
+#: worktree.c:295
 #, 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:320
+#: worktree.c:306
 #, 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:332
+#: worktree.c:318
 #, c-format
 msgid "'%s' does not exist"
 msgstr "\"%s\" không tồn tại"
 
-#: worktree.c:338
+#: worktree.c:324
 #, 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:347
+#: worktree.c:333
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "“%s” không chỉ ngược đến “%s”"
 
-#: wrapper.c:186 wrapper.c:356
+#: wrapper.c:194 wrapper.c:364
 #, c-format
 msgid "could not open '%s' for reading and writing"
 msgstr "không thể mở “%s” để đọc và ghi"
 
-#: wrapper.c:387 wrapper.c:588
+#: wrapper.c:395 wrapper.c:596
 #, c-format
 msgid "unable to access '%s'"
 msgstr "không thể truy cập “%s”"
 
-#: wrapper.c:596
+#: wrapper.c:604
 msgid "unable to get current working directory"
 msgstr "không thể lấy thư mục làm việc hiện hành"
 
@@ -9360,39 +9450,46 @@
 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:1692
+#: wt-status.c:1494
+#, 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:1733
 msgid "On branch "
 msgstr "Trên nhánh "
 
-#: wt-status.c:1699
+#: wt-status.c:1740
 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:1701
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "rebase đang được thực hiện: lên trên "
 
-#: wt-status.c:1711
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "Hiện tại chẳng ở nhánh nào cả."
 
-#: wt-status.c:1728
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "Lần chuyển giao khởi tạo"
 
-#: wt-status.c:1729
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "Vẫn chưa chuyển giao"
 
-#: wt-status.c:1743
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "Những tập tin chưa được theo dõi"
 
-#: wt-status.c:1745
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "Những tập tin bị lờ đi"
 
-#: wt-status.c:1749
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9404,32 +9501,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:1755
+#: wt-status.c:1796
 #, 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:1757
+#: wt-status.c:1798
 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:1763
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "Không có thay đổi nào"
 
-#: wt-status.c:1768
+#: wt-status.c:1809
 #, 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:1771
+#: wt-status.c:1812
 #, 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:1774
+#: wt-status.c:1815
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -9438,68 +9535,68 @@
 "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:1777
+#: wt-status.c:1818
 #, 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:1780
+#: wt-status.c:1821
 #, 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:1783 wt-status.c:1788
+#: wt-status.c:1824 wt-status.c:1829
 #, c-format
 msgid "nothing to commit\n"
 msgstr "không có gì để chuyển giao\n"
 
-#: wt-status.c:1786
+#: wt-status.c:1827
 #, 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:1790
+#: wt-status.c:1831
 #, 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:1903
+#: wt-status.c:1944
 msgid "No commits yet on "
 msgstr "Vẫn không thực hiện lệnh chuyển giao nào "
 
-#: wt-status.c:1907
+#: wt-status.c:1948
 msgid "HEAD (no branch)"
 msgstr "HEAD (không nhánh)"
 
-#: wt-status.c:1938
+#: wt-status.c:1979
 msgid "different"
 msgstr "khác"
 
-#: wt-status.c:1940 wt-status.c:1948
+#: wt-status.c:1981 wt-status.c:1989
 msgid "behind "
 msgstr "đằng sau "
 
-#: wt-status.c:1943 wt-status.c:1946
+#: wt-status.c:1984 wt-status.c:1987
 msgid "ahead "
 msgstr "phía trước "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2468
+#: wt-status.c:2509
 #, 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:2474
+#: wt-status.c:2515
 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:2476
+#: wt-status.c:2517
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr ""
@@ -9580,7 +9677,7 @@
 msgid "interactive picking"
 msgstr "sửa bằng cách tương tác"
 
-#: builtin/add.c:326 builtin/checkout.c:1535 builtin/reset.c:308
+#: builtin/add.c:326 builtin/checkout.c:1533 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "chọn “hunks” theo kiểu tương tác"
 
@@ -9711,12 +9808,12 @@
 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:501 builtin/checkout.c:1703 builtin/commit.c:351
+#: builtin/add.c:501 builtin/checkout.c:1701 builtin/commit.c:351
 #: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1506
 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:508 builtin/checkout.c:1715 builtin/commit.c:357
+#: builtin/add.c:508 builtin/checkout.c:1713 builtin/commit.c:357
 #: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1512
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul cần --pathspec-from-file"
@@ -9827,11 +9924,11 @@
 #: builtin/am.c:1270
 #, c-format
 msgid "invalid ident line: %.*s"
-msgstr "dòng thụt lề không hợp lệ: %.*s"
+msgstr "dòng định danh không hợp lệ: %.*s"
 
 #: builtin/am.c:1489
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
-msgstr "Kho thiếu đối tượng blob cần thiết để trở về trên “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:1491
 msgid "Using index info to reconstruct a base tree..."
@@ -9848,7 +9945,7 @@
 
 #: builtin/am.c:1516
 msgid "Falling back to patching base and 3-way merge..."
-msgstr "Đang trở lại để vá cơ sở và “hòa trộn 3-đường”…"
+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:1542
 msgid "Failed to merge in the changes."
@@ -9982,7 +10079,7 @@
 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:2218 builtin/init-db.c:541 builtin/prune-packed.c:16
+#: builtin/am.c:2218 builtin/init-db.c:559 builtin/prune-packed.c:16
 #: builtin/repack.c:306 builtin/stash.c:816
 msgid "be quiet"
 msgstr "im lặng"
@@ -10038,7 +10135,7 @@
 
 #: builtin/am.c:2262 builtin/branch.c:659 builtin/for-each-ref.c:38
 #: builtin/replace.c:556 builtin/tag.c:438 builtin/verify-tag.c:38
-#: bugreport.c:131
+#: bugreport.c:137
 msgid "format"
 msgstr "định dạng"
 
@@ -10332,113 +10429,117 @@
 "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:478
+#: builtin/bisect--helper.c:460 builtin/bisect--helper.c:473
+msgid "'' is not a valid term"
+msgstr "” không phải một thời hạn hợp lệ"
+
+#: builtin/bisect--helper.c:483
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "tùy chọn không được thừa nhận: “%s”"
 
-#: builtin/bisect--helper.c:482
+#: builtin/bisect--helper.c:487
 #, 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:514
+#: builtin/bisect--helper.c:519
 msgid "bad HEAD - I need a HEAD"
 msgstr "sai HEAD - Tôi cần một HEAD"
 
-#: builtin/bisect--helper.c:529
+#: builtin/bisect--helper.c:534
 #, 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:550
+#: builtin/bisect--helper.c:555
 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:553
+#: builtin/bisect--helper.c:558
 msgid "bad HEAD - strange symbolic ref"
 msgstr "sai HEAD - tham chiếu mềm kỳ lạ"
 
-#: builtin/bisect--helper.c:577
+#: builtin/bisect--helper.c:582
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "refspec không hợp lệ: “%s”"
 
-#: builtin/bisect--helper.c:633
+#: builtin/bisect--helper.c:638
 msgid "perform 'git bisect next'"
 msgstr "thực hiện “git bisect next”"
 
-#: builtin/bisect--helper.c:635
+#: builtin/bisect--helper.c:640
 msgid "write the terms to .git/BISECT_TERMS"
 msgstr "ghi thời kỳ vào .git/BISECT_TERMS"
 
-#: builtin/bisect--helper.c:637
+#: builtin/bisect--helper.c:642
 msgid "cleanup the bisection state"
 msgstr "dọn dẹp tình trạng di chuyển nửa bước"
 
-#: builtin/bisect--helper.c:639
+#: builtin/bisect--helper.c:644
 msgid "check for expected revs"
 msgstr "kiểm tra cho điểm xem xét cần dùng"
 
-#: builtin/bisect--helper.c:641
+#: builtin/bisect--helper.c:646
 msgid "reset the bisection state"
 msgstr "đặt lại trạng di chuyển nửa bước"
 
-#: builtin/bisect--helper.c:643
+#: builtin/bisect--helper.c:648
 msgid "write out the bisection state in BISECT_LOG"
 msgstr "ghi ra tình trạng di chuyển nửa bước trong BISECT_LOG"
 
-#: builtin/bisect--helper.c:645
+#: builtin/bisect--helper.c:650
 msgid "check and set terms in a bisection state"
 msgstr "kiểm tra và đặt thời điểm trong di chuyển nửa bước"
 
-#: builtin/bisect--helper.c:647
+#: builtin/bisect--helper.c:652
 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:649
+#: builtin/bisect--helper.c:654
 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:651
+#: builtin/bisect--helper.c:656
 msgid "start the bisect session"
 msgstr "bắt đầu phiên di chuyển nửa bước"
 
-#: builtin/bisect--helper.c:653
+#: builtin/bisect--helper.c:658
 msgid "update BISECT_HEAD instead of checking out the current commit"
 msgstr ""
 "cập nhật BISECT_HEAD thay vì lấy ra (checking out) lần chuyển giao hiện hành"
 
-#: builtin/bisect--helper.c:655
+#: builtin/bisect--helper.c:660
 msgid "no log for BISECT_WRITE"
 msgstr "không có nhật ký cho BISECT_WRITE"
 
-#: builtin/bisect--helper.c:673
+#: builtin/bisect--helper.c:678
 msgid "--write-terms requires two arguments"
 msgstr "--write-terms cần hai tham số"
 
-#: builtin/bisect--helper.c:677
+#: builtin/bisect--helper.c:682
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state không nhận đối số"
 
-#: builtin/bisect--helper.c:684
+#: builtin/bisect--helper.c:689
 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:688
+#: builtin/bisect--helper.c:693
 msgid "--bisect-write requires either 4 or 5 arguments"
 msgstr "--bisect-write cần 4 hoặc 5 tham số"
 
-#: builtin/bisect--helper.c:694
+#: builtin/bisect--helper.c:699
 msgid "--check-and-set-terms requires 3 arguments"
 msgstr "--check-and-set-terms cần 3 tham số"
 
-#: builtin/bisect--helper.c:700
+#: builtin/bisect--helper.c:705
 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:706
+#: builtin/bisect--helper.c:711
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms cần 0 hoặc 1 tham số"
 
@@ -11040,19 +11141,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <tập tin> [<tên tham chiếu>...]"
 
-#: builtin/bundle.c:66 builtin/pack-objects.c:3376
+#: builtin/bundle.c:66 builtin/pack-objects.c:3448
 msgid "do not show progress meter"
 msgstr "không hiển thị bộ đo tiến trình"
 
-#: builtin/bundle.c:68 builtin/pack-objects.c:3378
+#: builtin/bundle.c:68 builtin/pack-objects.c:3450
 msgid "show progress meter"
 msgstr "hiển thị bộ đo tiến trình"
 
-#: builtin/bundle.c:70 builtin/pack-objects.c:3380
+#: builtin/bundle.c:70 builtin/pack-objects.c:3452
 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:73 builtin/pack-objects.c:3383
+#: builtin/bundle.c:73 builtin/pack-objects.c:3455
 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"
 
@@ -11092,11 +11193,11 @@
 
 #: builtin/cat-file.c:599
 msgid ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 msgstr ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<định dạng>] | --batch-check[=<định dạng>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 
 #: builtin/cat-file.c:620
 msgid "only one batch option may be specified"
@@ -11130,7 +11231,7 @@
 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 git-submodule.sh:984
+#: builtin/cat-file.c:648 git-submodule.sh:958
 msgid "blob"
 msgstr "blob"
 
@@ -11191,8 +11292,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:1488 builtin/gc.c:537
-#: builtin/worktree.c:502
+#: builtin/check-ignore.c:21 builtin/checkout.c:1486 builtin/gc.c:537
+#: builtin/worktree.c:561
 msgid "suppress progress reporting"
 msgstr "chặn các báo cáo tiến trình hoạt động"
 
@@ -11285,7 +11386,7 @@
 #: builtin/checkout-index.c:178 builtin/column.c:31
 #: builtin/submodule--helper.c:1400 builtin/submodule--helper.c:1403
 #: builtin/submodule--helper.c:1411 builtin/submodule--helper.c:1909
-#: builtin/worktree.c:675
+#: builtin/worktree.c:754
 msgid "string"
 msgstr "chuỗi"
 
@@ -11398,11 +11499,11 @@
 msgid "path '%s' is unmerged"
 msgstr "đường dẫn “%s” không được hòa trộn"
 
-#: builtin/checkout.c:704
+#: builtin/checkout.c:702
 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:758
+#: builtin/checkout.c:756
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11412,50 +11513,50 @@
 "sau:\n"
 "%s"
 
-#: builtin/checkout.c:861
+#: builtin/checkout.c:859
 #, 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:903
+#: builtin/checkout.c:901
 msgid "HEAD is now at"
 msgstr "HEAD hiện giờ tại"
 
-#: builtin/checkout.c:907 builtin/clone.c:720
+#: builtin/checkout.c:905 builtin/clone.c:720
 msgid "unable to update HEAD"
 msgstr "không thể cập nhật HEAD"
 
-#: builtin/checkout.c:911
+#: builtin/checkout.c:909
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Đặt lại nhánh “%s”\n"
 
-#: builtin/checkout.c:914
+#: builtin/checkout.c:912
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Đã sẵn sàng trên “%s”\n"
 
-#: builtin/checkout.c:918
+#: builtin/checkout.c:916
 #, 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:920 builtin/checkout.c:1344
+#: builtin/checkout.c:918 builtin/checkout.c:1342
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Đã chuyển đến nhánh mới “%s”\n"
 
-#: builtin/checkout.c:922
+#: builtin/checkout.c:920
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Đã chuyển đến nhánh “%s”\n"
 
-#: builtin/checkout.c:973
+#: builtin/checkout.c:971
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " … và nhiều hơn %d.\n"
 
-#: builtin/checkout.c:979
+#: builtin/checkout.c:977
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11474,7 +11575,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:996
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11495,19 +11596,19 @@
 " git branch <tên_nhánh_mới> %s\n"
 "\n"
 
-#: builtin/checkout.c:1033
+#: builtin/checkout.c:1031
 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:1037
+#: builtin/checkout.c:1035
 msgid "Previous HEAD position was"
 msgstr "Vị trí trước kia của HEAD là"
 
-#: builtin/checkout.c:1077 builtin/checkout.c:1339
+#: builtin/checkout.c:1075 builtin/checkout.c:1337
 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:1152
+#: builtin/checkout.c:1150
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11516,7 +11617,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:1159
+#: builtin/checkout.c:1157
 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"
@@ -11536,51 +11637,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:1169
+#: builtin/checkout.c:1167
 #, 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:1235
+#: builtin/checkout.c:1233
 msgid "only one reference expected"
 msgstr "chỉ cần một tham chiếu"
 
-#: builtin/checkout.c:1252
+#: builtin/checkout.c:1250
 #, 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:1298 builtin/worktree.c:283 builtin/worktree.c:451
+#: builtin/checkout.c:1296 builtin/worktree.c:342 builtin/worktree.c:510
 #, c-format
 msgid "invalid reference: %s"
 msgstr "tham chiếu không hợp lệ: %s"
 
-#: builtin/checkout.c:1311 builtin/checkout.c:1677
+#: builtin/checkout.c:1309 builtin/checkout.c:1675
 #, 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:1358
+#: builtin/checkout.c:1356
 #, 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:1360
+#: builtin/checkout.c:1358
 #, 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:1361 builtin/checkout.c:1369
+#: builtin/checkout.c:1359 builtin/checkout.c:1367
 #, 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:1364
+#: builtin/checkout.c:1362
 #, 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:1380
+#: builtin/checkout.c:1378
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11588,7 +11689,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:1384
+#: builtin/checkout.c:1382
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11596,7 +11697,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:1388
+#: builtin/checkout.c:1386
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11604,7 +11705,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:1392
+#: builtin/checkout.c:1390
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11612,7 +11713,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:1396
+#: builtin/checkout.c:1394
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11620,150 +11721,150 @@
 "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:1400
+#: builtin/checkout.c:1398
 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:1407
+#: builtin/checkout.c:1405
 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:1410 builtin/checkout.c:1414 builtin/checkout.c:1418
+#: builtin/checkout.c:1408 builtin/checkout.c:1412 builtin/checkout.c:1416
 #, 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:1422 builtin/checkout.c:1425 builtin/checkout.c:1428
-#: builtin/checkout.c:1433 builtin/checkout.c:1438
+#: builtin/checkout.c:1420 builtin/checkout.c:1423 builtin/checkout.c:1426
+#: builtin/checkout.c:1431 builtin/checkout.c:1436
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "“%s” không thể được dùng với “%s”"
 
-#: builtin/checkout.c:1435
+#: builtin/checkout.c:1433
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "“%s” không thể nhận <điểm-đầu>"
 
-#: builtin/checkout.c:1443
+#: builtin/checkout.c:1441
 #, 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:1450
+#: builtin/checkout.c:1448
 msgid "missing branch or commit argument"
 msgstr "thiếu tham số là nhánh hoặc lần chuyển giao"
 
-#: builtin/checkout.c:1492 builtin/clone.c:91 builtin/commit-graph.c:80
-#: builtin/commit-graph.c:164 builtin/fetch.c:168 builtin/merge.c:288
+#: builtin/checkout.c:1490 builtin/clone.c:91 builtin/commit-graph.c:82
+#: builtin/commit-graph.c:189 builtin/fetch.c:168 builtin/merge.c:288
 #: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:561
 #: builtin/send-pack.c:173
 msgid "force progress reporting"
 msgstr "ép buộc báo cáo tiến triển công việc"
 
-#: builtin/checkout.c:1493
+#: builtin/checkout.c:1491
 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:1494 builtin/log.c:1709 parse-options.h:322
+#: builtin/checkout.c:1492 builtin/log.c:1709 parse-options.h:322
 msgid "style"
 msgstr "kiểu"
 
-#: builtin/checkout.c:1495
+#: builtin/checkout.c:1493
 msgid "conflict style (merge or diff3)"
 msgstr "xung đột kiểu (hòa trộn hoặc diff3)"
 
-#: builtin/checkout.c:1507 builtin/worktree.c:499
+#: builtin/checkout.c:1505 builtin/worktree.c:558
 msgid "detach HEAD at named commit"
 msgstr "rời bỏ HEAD tại lần chuyển giao theo tên"
 
-#: builtin/checkout.c:1508
+#: builtin/checkout.c:1506
 msgid "set upstream info for new branch"
 msgstr "đặt thông tin thượng nguồn cho nhánh mới"
 
-#: builtin/checkout.c:1510
+#: builtin/checkout.c:1508
 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:1512
+#: builtin/checkout.c:1510
 msgid "new-branch"
 msgstr "nhánh-mới"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new unparented branch"
 msgstr "nhánh không cha mới"
 
-#: builtin/checkout.c:1514 builtin/merge.c:292
+#: builtin/checkout.c:1512 builtin/merge.c:292
 msgid "update ignored files (default)"
 msgstr "cập nhật các tập tin bị bỏ qua (mặc định)"
 
-#: builtin/checkout.c:1517
+#: builtin/checkout.c:1515
 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:1530
+#: builtin/checkout.c:1528
 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:1533
+#: builtin/checkout.c:1531
 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:1537
+#: builtin/checkout.c:1535
 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:1592
+#: builtin/checkout.c:1590
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c, -%c và --orphan loại từ lẫn nhau"
 
-#: builtin/checkout.c:1596
+#: builtin/checkout.c:1594
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p và --overlay loại từ lẫn nhau"
 
-#: builtin/checkout.c:1633
+#: builtin/checkout.c:1631
 msgid "--track needs a branch name"
 msgstr "--track cần tên một nhánh"
 
-#: builtin/checkout.c:1638
+#: builtin/checkout.c:1636
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "thiếu tên nhánh; hãy thử -%c"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "could not resolve %s"
 msgstr "không thể phân giải “%s”"
 
-#: builtin/checkout.c:1686
+#: builtin/checkout.c:1684
 msgid "invalid path specification"
 msgstr "đường dẫn đã cho không hợp lệ"
 
-#: builtin/checkout.c:1693
+#: builtin/checkout.c:1691
 #, 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:1697
+#: builtin/checkout.c:1695
 #, 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:1706
+#: builtin/checkout.c:1704
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file xung khắc với --detach"
 
-#: builtin/checkout.c:1709 builtin/reset.c:325 builtin/stash.c:1503
+#: builtin/checkout.c:1707 builtin/reset.c:325 builtin/stash.c:1503
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file xung khắc với --patch"
 
-#: builtin/checkout.c:1720
+#: builtin/checkout.c:1718
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -11771,69 +11872,70 @@
 "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:1725
+#: builtin/checkout.c:1723
 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:1751 builtin/checkout.c:1753 builtin/checkout.c:1802
-#: builtin/checkout.c:1804 builtin/clone.c:121 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/worktree.c:495 builtin/worktree.c:497
+#: builtin/checkout.c:1749 builtin/checkout.c:1751 builtin/checkout.c:1800
+#: builtin/checkout.c:1802 builtin/clone.c:121 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2295 builtin/worktree.c:554
+#: builtin/worktree.c:556
 msgid "branch"
 msgstr "nhánh"
 
-#: builtin/checkout.c:1752
+#: builtin/checkout.c:1750
 msgid "create and checkout a new branch"
 msgstr "tạo và checkout một nhánh mới"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid "create/reset and checkout a branch"
 msgstr "tạo/đặt_lại và checkout một nhánh"
 
-#: builtin/checkout.c:1755
+#: builtin/checkout.c:1753
 msgid "create reflog for new branch"
 msgstr "tạo reflog cho nhánh mới"
 
-#: builtin/checkout.c:1757
+#: builtin/checkout.c:1755
 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:1758
+#: builtin/checkout.c:1756
 msgid "use overlay mode (default)"
 msgstr "dùng chế độ che phủ (mặc định)"
 
-#: builtin/checkout.c:1803
+#: builtin/checkout.c:1801
 msgid "create and switch to a new branch"
 msgstr "tạo và chuyển đến một nhánh mới"
 
-#: builtin/checkout.c:1805
+#: builtin/checkout.c:1803
 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:1807
+#: builtin/checkout.c:1805
 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:1809
+#: builtin/checkout.c:1807
 msgid "throw away local modifications"
 msgstr "vứt bỏ các sửa đổi địa phương"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "which tree-ish to checkout from"
 msgstr "lấy ra từ tree-ish nào"
 
-#: builtin/checkout.c:1845
+#: builtin/checkout.c:1843
 msgid "restore the index"
 msgstr "phục hồi bảng mục lục"
 
-#: builtin/checkout.c:1847
+#: builtin/checkout.c:1845
 msgid "restore the working tree (default)"
 msgstr "phục hồi cây làm việc (mặc định)"
 
-#: builtin/checkout.c:1849
+#: builtin/checkout.c:1847
 msgid "ignore unmerged entries"
 msgstr "bỏ qua những thứ chưa hòa trộn: %s"
 
-#: builtin/checkout.c:1850
+#: builtin/checkout.c:1848
 msgid "use overlay mode"
 msgstr "dùng chế độ che phủ"
 
@@ -11996,11 +12098,7 @@
 msgid "remove only ignored files"
 msgstr "chỉ gỡ bỏ những tập tin bị bỏ qua"
 
-#: builtin/clean.c:931
-msgid "-x and -X cannot be used together"
-msgstr "-x và -X không thể dùng cùng nhau"
-
-#: builtin/clean.c:935
+#: builtin/clean.c:929
 msgid ""
 "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
 "clean"
@@ -12008,7 +12106,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:938
+#: builtin/clean.c:932
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n, nor -f given; "
 "refusing to clean"
@@ -12016,6 +12114,10 @@
 "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
+msgid "-x and -X cannot be used together"
+msgstr "-x và -X không thể dùng cùng nhau"
+
 #: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<các tùy chọn>] [--] <kho> [<t.mục>]"
@@ -12024,7 +12126,7 @@
 msgid "don't create a checkout"
 msgstr "không tạo một checkout"
 
-#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:536
+#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:554
 msgid "create a bare repository"
 msgstr "tạo kho thuần"
 
@@ -12056,11 +12158,11 @@
 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:111 builtin/init-db.c:533
+#: builtin/clone.c:111 builtin/init-db.c:551
 msgid "template-directory"
 msgstr "thư-mục-mẫu"
 
-#: builtin/clone.c:112 builtin/init-db.c:534
+#: builtin/clone.c:112 builtin/init-db.c:552
 msgid "directory from which templates will be used"
 msgstr "thư mục mà tại đó các mẫu sẽ được dùng"
 
@@ -12074,8 +12176,8 @@
 msgid "use --reference only while cloning"
 msgstr "chỉ dùng --reference khi nhân bản"
 
-#: builtin/clone.c:119 builtin/column.c:27 builtin/merge-file.c:46
-#: builtin/pack-objects.c:3442 builtin/repack.c:329
+#: builtin/clone.c:119 builtin/column.c:27 builtin/init-db.c:562
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3514 builtin/repack.c:329
 msgid "name"
 msgstr "tên"
 
@@ -12100,7 +12202,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:127 builtin/fetch.c:171 builtin/pack-objects.c:3431
+#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3503
 #: builtin/pull.c:211
 msgid "time"
 msgstr "thời-gian"
@@ -12133,11 +12235,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:137 builtin/init-db.c:542
+#: builtin/clone.c:137 builtin/init-db.c:560
 msgid "gitdir"
 msgstr "gitdir"
 
-#: builtin/clone.c:138 builtin/init-db.c:543
+#: builtin/clone.c:138 builtin/init-db.c:561
 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"
 
@@ -12264,7 +12366,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:971 builtin/receive-pack.c:1972
+#: builtin/clone.c:971 builtin/receive-pack.c:1982
 msgid "Too many arguments."
 msgstr "Có quá nhiều đối số."
 
@@ -12281,48 +12383,48 @@
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "tùy chọn --bare và --separate-git-dir xung khắc nhau."
 
-#: builtin/clone.c:1004
+#: builtin/clone.c:1007
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "kho chứa “%s” chưa tồn tại"
 
-#: builtin/clone.c:1010 builtin/fetch.c:1789
+#: builtin/clone.c:1011 builtin/fetch.c:1794
 #, 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"
 
-#: builtin/clone.c:1020
+#: builtin/clone.c:1021
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "đường dẫn đích “%s” đã có từ trước và không phải là một thư mục rỗng."
 
-#: builtin/clone.c:1030
+#: builtin/clone.c:1033
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "cây làm việc “%s” đã sẵn tồn tại rồi."
 
-#: builtin/clone.c:1045 builtin/clone.c:1066 builtin/difftool.c:271
-#: builtin/log.c:1886 builtin/worktree.c:295 builtin/worktree.c:327
+#: builtin/clone.c:1048 builtin/clone.c:1069 builtin/difftool.c:271
+#: builtin/log.c:1886 builtin/worktree.c:354 builtin/worktree.c:386
 #, 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”"
 
-#: builtin/clone.c:1050
+#: builtin/clone.c:1053
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "không thể tạo cây thư mục làm việc dir “%s”"
 
-#: builtin/clone.c:1070
+#: builtin/clone.c:1073
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Đang nhân bản thành kho chứa bare “%s”…\n"
 
-#: builtin/clone.c:1072
+#: builtin/clone.c:1075
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Đang nhân bản thành “%s”…\n"
 
-#: builtin/clone.c:1096
+#: builtin/clone.c:1099
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -12330,41 +12432,41 @@
 "nhân bản --recursive không tương thích với cả hai --reference và --reference-"
 "if-able"
 
-#: builtin/clone.c:1160
+#: builtin/clone.c:1164
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth bị lờ đi khi nhân bản nội bộ; hãy sử dụng file:// để thay thế."
 
-#: builtin/clone.c:1162
+#: builtin/clone.c:1166
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-since bị lờ đi khi nhân bản nội bộ; hãy sử dụng file:// để thay "
 "thế."
 
-#: builtin/clone.c:1164
+#: builtin/clone.c:1168
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr ""
 "--shallow-exclude bị lờ đi khi nhân bản nội bộ; hãy sử dụng file:// để thay "
 "thế."
 
-#: builtin/clone.c:1166
+#: builtin/clone.c:1170
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr ""
 "--filter bị lờ đi khi nhân bản nội bộ; hãy sử dụng file:// để thay thế."
 
-#: builtin/clone.c:1169
+#: builtin/clone.c:1173
 msgid "source repository is shallow, ignoring --local"
 msgstr "kho nguồn là nông, nên bỏ qua --local"
 
-#: builtin/clone.c:1174
+#: builtin/clone.c:1178
 msgid "--local is ignored"
 msgstr "--local bị lờ đi"
 
-#: builtin/clone.c:1249 builtin/clone.c:1257
+#: builtin/clone.c:1262 builtin/clone.c:1270
 #, 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:1260
+#: builtin/clone.c:1273
 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."
 
@@ -12400,14 +12502,14 @@
 msgid "--command must be the first argument"
 msgstr "--command phải là đối số đầu tiên"
 
-#: builtin/commit-graph.c:11 builtin/commit-graph.c:19
+#: builtin/commit-graph.c:13 builtin/commit-graph.c:21
 msgid ""
 "git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
 msgstr ""
 "git commit-graph verify [--object-dir </thư/mục/đối/tượng>] [--shallow] [--"
 "[no-]progress]"
 
-#: builtin/commit-graph.c:12 builtin/commit-graph.c:24
+#: builtin/commit-graph.c:14 builtin/commit-graph.c:26
 msgid ""
 "git commit-graph write [--object-dir <objdir>] [--append] [--"
 "split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
@@ -12417,88 +12519,97 @@
 "split[=<chiến lược>]] [--reachable|--stdin-packs|--stdin-commits][--changed-"
 "paths] [--[no-]progress] <các tùy chọn chia tách>"
 
-#: builtin/commit-graph.c:60
+#: builtin/commit-graph.c:62
 #, c-format
 msgid "could not find object directory matching %s"
 msgstr "không thể tìm thấy thư mục đối tượng khớp với “%s”"
 
-#: builtin/commit-graph.c:76 builtin/commit-graph.c:152
-#: builtin/commit-graph.c:257 builtin/fetch.c:180 builtin/log.c:1678
+#: builtin/commit-graph.c:78 builtin/commit-graph.c:177
+#: builtin/commit-graph.c:276 builtin/fetch.c:180 builtin/log.c:1678
 msgid "dir"
 msgstr "tmục"
 
-#: builtin/commit-graph.c:77 builtin/commit-graph.c:153
-#: builtin/commit-graph.c:258
+#: builtin/commit-graph.c:79 builtin/commit-graph.c:178
+#: builtin/commit-graph.c:277
 msgid "The object directory to store the graph"
 msgstr "Thư mục đối tượng để lưu đồ thị"
 
-#: builtin/commit-graph.c:79
+#: builtin/commit-graph.c:81
 msgid "if the commit-graph is split, only verify the tip file"
 msgstr ""
 "nếu đồ-thị-các-lần-chuyển-giao bị chia cắt, thì chỉ thẩm tra tập tin đỉnh"
 
-#: builtin/commit-graph.c:102
+#: builtin/commit-graph.c:104
 #, c-format
 msgid "Could not open commit-graph '%s'"
 msgstr "Không thể mở đồ thị chuyển giao “%s”"
 
-#: builtin/commit-graph.c:136
+#: builtin/commit-graph.c:138
 #, c-format
 msgid "unrecognized --split argument, %s"
 msgstr "đối số --split không được thừa nhận, %s"
 
-#: builtin/commit-graph.c:155
+#: builtin/commit-graph.c:151
+#, c-format
+msgid "unexpected non-hex object ID: %s"
+msgstr "nhận được ID đối tượng không phải dạng hex không cần: %s"
+
+#: builtin/commit-graph.c:156
+#, c-format
+msgid "invalid object: %s"
+msgstr "đối tượng không hợp lệ: %s"
+
+#: builtin/commit-graph.c:180
 msgid "start walk at all refs"
 msgstr "bắt đầu di chuyển tại mọi tham chiếu"
 
-#: builtin/commit-graph.c:157
+#: builtin/commit-graph.c:182
 msgid "scan pack-indexes listed by stdin for commits"
 msgstr ""
 "quét dó các mục lục gói được liệt kê bởi đầu vào tiêu chuẩn cho các lần "
 "chuyển giao"
 
-#: builtin/commit-graph.c:159
+#: builtin/commit-graph.c:184
 msgid "start walk at commits listed by stdin"
 msgstr ""
 "bắt đầu di chuyển tại các lần chuyển giao được liệt kê bởi đầu vào tiêu chuẩn"
 
-#: builtin/commit-graph.c:161
+#: builtin/commit-graph.c:186
 msgid "include all commits already in the commit-graph file"
 msgstr ""
 "bao gồm mọi lần chuyển giao đã sẵn có trongười tập tin đồ-thị-các-lần-chuyển-"
 "giao"
 
-#: builtin/commit-graph.c:163
+#: builtin/commit-graph.c:188
 msgid "enable computation for changed paths"
 msgstr "cho phép tính toán các đường dẫn đã bị thay đổi"
 
-#: builtin/commit-graph.c:166
+#: builtin/commit-graph.c:191
 msgid "allow writing an incremental commit-graph file"
 msgstr "cho phép ghi một tập tin đồ họa các lần chuyển giao lớn lên"
 
-#: builtin/commit-graph.c:170
+#: builtin/commit-graph.c:195
 msgid "maximum number of commits in a non-base split commit-graph"
 msgstr ""
 "số lượng tối đa của các lần chuyển giao trong một đồ-thị-các-lần-chuyển-giao "
 "chia cắt không-cơ-sở"
 
-#: builtin/commit-graph.c:172
+#: builtin/commit-graph.c:197
 msgid "maximum ratio between two levels of a split commit-graph"
 msgstr "tỷ lệ tối đa giữa hai mức của một đồ-thị-các-lần-chuyển-giao chia cắt"
 
-#: builtin/commit-graph.c:174
+#: builtin/commit-graph.c:199
 msgid "only expire files older than a given date-time"
 msgstr "chỉ làm hết hạn các tập tin khi nó cũ hơn khoảng <thời gian> đưa ra"
 
-#: builtin/commit-graph.c:190
+#: builtin/commit-graph.c:215
 msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
 msgstr ""
 "không thể sử dụng hơn một --reachable, --stdin-commits, hay --stdin-packs"
 
-#: builtin/commit-graph.c:229
-#, c-format
-msgid "unexpected non-hex object ID: %s"
-msgstr "nhận được ID đối tượng không phải dạng hex không cần: %s"
+#: builtin/commit-graph.c:245
+msgid "Collecting commits from input"
+msgstr "Sưu tập các lần chuyển giao từ đầu vào"
 
 #: builtin/commit-tree.c:18
 msgid ""
@@ -12917,7 +13028,7 @@
 msgstr "phiên bản"
 
 #: builtin/commit.c:1376 builtin/commit.c:1535 builtin/push.c:549
-#: builtin/worktree.c:646
+#: builtin/worktree.c:722
 msgid "machine-readable output"
 msgstr "kết xuất dạng máy-có-thể-đọc"
 
@@ -12930,8 +13041,8 @@
 msgstr "chấm dứt các mục bằng NUL"
 
 #: builtin/commit.c:1384 builtin/commit.c:1388 builtin/commit.c:1543
-#: builtin/fast-export.c:1153 builtin/fast-export.c:1156
-#: builtin/fast-export.c:1159 builtin/rebase.c:1392 parse-options.h:336
+#: builtin/fast-export.c:1199 builtin/fast-export.c:1202
+#: builtin/fast-export.c:1205 builtin/rebase.c:1392 parse-options.h:336
 msgid "mode"
 msgstr "chế độ"
 
@@ -13624,35 +13735,45 @@
 msgid "--broken is incompatible with commit-ishes"
 msgstr "--broken là xung khắc với commit-ishes"
 
-#: builtin/diff.c:84
+#: builtin/diff.c:91
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "“%s”: không phải tập tin bình thường hay liên kết mềm"
 
-#: builtin/diff.c:235
+#: builtin/diff.c:242
 #, c-format
 msgid "invalid option: %s"
 msgstr "tùy chọn không hợp lệ: %s"
 
-#: builtin/diff.c:350
+#: builtin/diff.c:359
+#, c-format
+msgid "%s...%s: no merge base"
+msgstr "%s...%s: không có cơ sở hòa trộn"
+
+#: builtin/diff.c:469
 msgid "Not a git repository"
 msgstr "Không phải là kho git"
 
-#: builtin/diff.c:394
+#: builtin/diff.c:514
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "đối tượng đã cho “%s” không hợp lệ."
 
-#: builtin/diff.c:403
+#: builtin/diff.c:525
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "đã cho nhiều hơn hai đối tượng blob: “%s”"
 
-#: builtin/diff.c:408
+#: builtin/diff.c:530
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "đã cho đối tượng không thể nắm giữ “%s”."
 
+#: builtin/diff.c:564
+#, c-format
+msgid "%s...%s: multiple merge bases, using %s"
+msgstr "%s...%s: có nhiều cơ sở để hòa trộn, nên dùng %s"
+
 #: builtin/difftool.c:30
 msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
 msgstr ""
@@ -13804,85 +13925,107 @@
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-opts]"
 
-#: builtin/fast-export.c:853
+#: builtin/fast-export.c:868
 msgid "Error: Cannot export nested tags unless --mark-tags is specified."
 msgstr "Lỗi: không thể xuất thẻ lồng nhau trừ khi --mark-tags được chỉ định."
 
-#: builtin/fast-export.c:1152
+#: builtin/fast-export.c:1178
+msgid "--anonymize-map token cannot be empty"
+msgstr "--anonymize-map thẻ không thể là rỗng"
+
+#: builtin/fast-export.c:1198
 msgid "show progress after <n> objects"
 msgstr "hiển thị tiến triển sau <n> đối tượng"
 
-#: builtin/fast-export.c:1154
+#: builtin/fast-export.c:1200
 msgid "select handling of signed tags"
 msgstr "chọn điều khiển của thẻ đã ký"
 
-#: builtin/fast-export.c:1157
+#: builtin/fast-export.c:1203
 msgid "select handling of tags that tag filtered objects"
 msgstr "chọn sự xử lý của các thẻ, cái mà đánh thẻ các đối tượng được lọc ra"
 
-#: builtin/fast-export.c:1160
+#: builtin/fast-export.c:1206
 msgid "select handling of commit messages in an alternate encoding"
 msgstr ""
 "chọn bộ xử lý cho các ghi chú của lần chuyển giao theo một bộ mã thay thế"
 
-#: builtin/fast-export.c:1163
+#: builtin/fast-export.c:1209
 msgid "Dump marks to this file"
 msgstr "Đổ các đánh dấu này vào tập-tin"
 
-#: builtin/fast-export.c:1165
+#: builtin/fast-export.c:1211
 msgid "Import marks from this file"
 msgstr "Nhập vào đánh dấu từ tập tin này"
 
-#: builtin/fast-export.c:1169
+#: builtin/fast-export.c:1215
 msgid "Import marks from this file if it exists"
 msgstr "Nhập vào đánh dấu từ tập tin sẵn có"
 
-#: builtin/fast-export.c:1171
+#: builtin/fast-export.c:1217
 msgid "Fake a tagger when tags lack one"
 msgstr "Làm giả một cái thẻ khi thẻ bị thiếu một cái"
 
-#: builtin/fast-export.c:1173
+#: builtin/fast-export.c:1219
 msgid "Output full tree for each commit"
 msgstr "Xuất ra toàn bộ cây cho mỗi lần chuyển giao"
 
-#: builtin/fast-export.c:1175
+#: builtin/fast-export.c:1221
 msgid "Use the done feature to terminate the stream"
 msgstr "Sử dụng tính năng done để chấm dứt luồng dữ liệu"
 
-#: builtin/fast-export.c:1176
+#: builtin/fast-export.c:1222
 msgid "Skip output of blob data"
 msgstr "Bỏ qua kết xuất của dữ liệu blob"
 
-#: builtin/fast-export.c:1177 builtin/log.c:1724
+#: builtin/fast-export.c:1223 builtin/log.c:1724
 msgid "refspec"
 msgstr "refspec"
 
-#: builtin/fast-export.c:1178
+#: builtin/fast-export.c:1224
 msgid "Apply refspec to exported refs"
 msgstr "Áp dụng refspec cho refs đã xuất"
 
-#: builtin/fast-export.c:1179
+#: builtin/fast-export.c:1225
 msgid "anonymize output"
 msgstr "kết xuất anonymize"
 
-#: builtin/fast-export.c:1181
+#: builtin/fast-export.c:1226
+msgid "from:to"
+msgstr "từ:đến"
+
+#: builtin/fast-export.c:1227
+msgid "convert <from> to <to> in anonymized output"
+msgstr "chuyển đổi <from> sang <to> đầu ra ẩn danh"
+
+#: builtin/fast-export.c:1230
 msgid "Reference parents which are not in fast-export stream by object id"
 msgstr ""
 "Các cha mẹ tham chiếu cái mà k trong luồng dữ liệu fast-export bởi mã id đối "
 "tượng"
 
-#: builtin/fast-export.c:1183
+#: builtin/fast-export.c:1232
 msgid "Show original object ids of blobs/commits"
 msgstr "Hiển thị các mã id nguyên gốc của blobs/commits"
 
-#: builtin/fast-export.c:1185
+#: builtin/fast-export.c:1234
 msgid "Label tags with mark ids"
 msgstr "Gắn nhãn thẻ ID dấu"
 
-#: builtin/fast-export.c:1220
+#: builtin/fast-export.c:1257
+#| msgid "--trailer with --only-input does not make sense"
+msgid "--anonymize-map without --anonymize does not make sense"
+msgstr "--anonymize-map mà không có --anonymize là không hợp lý"
+
+#: builtin/fast-export.c:1272
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
 msgstr "Không thể chuyển qua cả hai --import-marks và --import-marks-if-exists"
 
+#: builtin/fetch-pack.c:245
+#, c-format
+msgid "Lockfile created but not reported: %s"
+msgstr "Tập tin khóa đã được tạo nhưng chưa được báo cáo: %s"
+
 #: builtin/fetch.c:35
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<các tùy chọn>] [<kho-chứa> [<refspec>…]]"
@@ -14211,40 +14354,40 @@
 msgid "You need to specify a tag name."
 msgstr "Bạn phải định rõ tên thẻ."
 
-#: builtin/fetch.c:1773
+#: builtin/fetch.c:1778
 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:1775
+#: builtin/fetch.c:1780
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "Các tùy chọn--deepen và --depth loại từ lẫn nhau"
 
-#: builtin/fetch.c:1780
+#: builtin/fetch.c:1785
 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:1782
+#: builtin/fetch.c:1787
 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:1798
+#: builtin/fetch.c:1800
 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:1800
+#: builtin/fetch.c:1802
 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:1809
+#: builtin/fetch.c:1811
 #, 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:1816
+#: builtin/fetch.c:1818
 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:1834
+#: builtin/fetch.c:1836
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14703,8 +14846,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1730
-#: builtin/pack-objects.c:2855
+#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1727
+#: builtin/pack-objects.c:2904
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "không hỗ trợ đa tuyến, bỏ qua %s"
@@ -14934,11 +15077,11 @@
 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:1084 builtin/pack-objects.c:3548
+#: builtin/grep.c:1084 builtin/pack-objects.c:3623
 msgid "no threads support, ignoring --threads"
 msgstr "không hỗ trợ đa tuyến, bỏ qua --threads"
 
-#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2852
+#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2901
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "số tuyến chỉ ra không hợp lệ (%d)"
@@ -15138,7 +15281,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:288 builtin/pack-objects.c:607
+#: builtin/index-pack.c:288 builtin/pack-objects.c:618
 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"
 
@@ -15208,8 +15351,8 @@
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "SỰ VA CHẠM SHA1 ĐÃ XẢY RA VỚI %s!"
 
-#: builtin/index-pack.c:738 builtin/pack-objects.c:159
-#: builtin/pack-objects.c:219 builtin/pack-objects.c:314
+#: builtin/index-pack.c:738 builtin/pack-objects.c:170
+#: builtin/pack-objects.c:230 builtin/pack-objects.c:325
 #, c-format
 msgid "unable to read %s"
 msgstr "không thể đọc %s"
@@ -15270,7 +15413,7 @@
 msgid "Resolving deltas"
 msgstr "Đang phân giải các delta"
 
-#: builtin/index-pack.c:1208 builtin/pack-objects.c:2616
+#: builtin/index-pack.c:1208 builtin/pack-objects.c:2665
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "không thể tạo tuyến: %s"
@@ -15333,56 +15476,65 @@
 msgid "cannot store index file"
 msgstr "không thể lưu trữ tập tin ghi mục lục"
 
-#: builtin/index-pack.c:1528 builtin/pack-objects.c:2863
+#: builtin/index-pack.c:1528 builtin/pack-objects.c:2912
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "sai pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1596
+#: builtin/index-pack.c:1592
 #, 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:1598
+#: builtin/index-pack.c:1594
 #, 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:1646
+#: builtin/index-pack.c:1642
 #, 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:1653
+#: builtin/index-pack.c:1649
 #, 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:1692
+#: builtin/index-pack.c:1689
 msgid "Cannot come back to cwd"
 msgstr "Không thể quay lại cwd"
 
-#: builtin/index-pack.c:1741 builtin/index-pack.c:1744
-#: builtin/index-pack.c:1760 builtin/index-pack.c:1764
+#: builtin/index-pack.c:1738 builtin/index-pack.c:1741
+#: builtin/index-pack.c:1757 builtin/index-pack.c:1761
 #, c-format
 msgid "bad %s"
 msgstr "%s sai"
 
-#: builtin/index-pack.c:1780
+#: builtin/index-pack.c:1767 builtin/init-db.c:392 builtin/init-db.c:621
+#, 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:1782
 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:1782
+#: builtin/index-pack.c:1784
 msgid "--stdin requires a git repository"
 msgstr "--stdin cần một kho git"
 
-#: builtin/index-pack.c:1788
+#: builtin/index-pack.c:1786
+msgid "--object-format cannot be used with --stdin"
+msgstr "--object-format không thể được dùng với --stdin"
+
+#: builtin/index-pack.c:1792
 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:1836 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1840 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "lỗi fsck trong các đối tượng gói"
 
@@ -15426,51 +15578,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:356
+#: builtin/init-db.c:276
+#, 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:368
 #, 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:359
+#: builtin/init-db.c:371
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "không di chuyển được %s vào %s"
 
-#: builtin/init-db.c:374
+#: builtin/init-db.c:386
 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:380 builtin/init-db.c:601
-#, c-format
-msgid "unknown hash algorithm '%s'"
-msgstr "không hiểu thuật toán băm dữ liệu “%s”"
-
-#: builtin/init-db.c:397 builtin/init-db.c:400
+#: builtin/init-db.c:410 builtin/init-db.c:413
 #, c-format
 msgid "%s already exists"
 msgstr "%s đã có từ trước rồi"
 
-#: builtin/init-db.c:458
+#: builtin/init-db.c:444
+#, c-format
+msgid "re-init: ignored --initial-branch=%s"
+msgstr "re-init: --initial-branch=%s bị bỏ qua"
+
+#: builtin/init-db.c:475
 #, 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:459
+#: builtin/init-db.c:476
 #, 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:463
+#: builtin/init-db.c:480
 #, 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:464
+#: builtin/init-db.c:481
 #, 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:513
+#: builtin/init-db.c:530
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -15478,33 +15635,37 @@
 "git init [-q | --quiet] [--bare] [--template=<thư-mục-tạm>] [--shared[=<các-"
 "quyền>]] [thư-mục]"
 
-#: builtin/init-db.c:538
+#: builtin/init-db.c:556
 msgid "permissions"
 msgstr "các quyền"
 
-#: builtin/init-db.c:539
+#: builtin/init-db.c:557
 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:544
+#: builtin/init-db.c:563
+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:564
 msgid "hash"
 msgstr "băm"
 
-#: builtin/init-db.c:545
+#: builtin/init-db.c:565 builtin/show-index.c:22
 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:578 builtin/init-db.c:583
+#: builtin/init-db.c:598 builtin/init-db.c:603
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "không thể mkdir (tạo thư mục): %s"
 
-#: builtin/init-db.c:587
+#: builtin/init-db.c:607
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "không thể chdir (chuyển đổi thư mục) sang %s"
 
-#: builtin/init-db.c:614
+#: builtin/init-db.c:634
 #, c-format
 msgid ""
 "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
@@ -15513,7 +15674,7 @@
 "%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:642
+#: builtin/init-db.c:662
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "Không thể truy cập cây (tree) làm việc “%s”"
@@ -15911,11 +16072,11 @@
 #: builtin/log.c:1812
 #, c-format
 msgid "invalid ident line: %s"
-msgstr "dòng thụt lề không hợp lệ: %s"
+msgstr "dòng định danh không hợp lệ: %s"
 
 #: builtin/log.c:1827
 msgid "-n and -k are mutually exclusive"
-msgstr "-n và  -k loại từ lẫn nhau"
+msgstr "-n và -k loại trừ lẫn nhau"
 
 #: builtin/log.c:1829
 msgid "--subject-prefix/--rfc and -k are mutually exclusive"
@@ -17270,7 +17431,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:164
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
 msgid "do not remove, show only"
 msgstr "không gỡ bỏ, chỉ hiển thị"
 
@@ -17305,103 +17466,120 @@
 "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:431
+#: builtin/pack-objects.c:442
 #, 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:442
+#: builtin/pack-objects.c:453
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "đối tượng đã đóng gói sai hỏng cho %s"
 
-#: builtin/pack-objects.c:573
+#: builtin/pack-objects.c:584
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "dò thấy delta đệ quy cho đối tượng %s"
 
-#: builtin/pack-objects.c:784
+#: builtin/pack-objects.c:795
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "đã sắp xếp %u đối tượng, cần %<PRIu32>"
 
-#: builtin/pack-objects.c:973
+#: builtin/pack-objects.c:1003
 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:986
+#: builtin/pack-objects.c:1016
 msgid "Writing objects"
 msgstr "Đang ghi lại các đối tượng"
 
-#: builtin/pack-objects.c:1047 builtin/update-index.c:90
+#: builtin/pack-objects.c:1077 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:1100
+#: builtin/pack-objects.c:1130
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "đã ghi %<PRIu32> đối tượng trong khi cần %<PRIu32>"
 
-#: builtin/pack-objects.c:1298
+#: builtin/pack-objects.c:1347
 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:1725
+#: builtin/pack-objects.c:1774
 #, 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:1734
+#: builtin/pack-objects.c:1783
 #, 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:2005
+#: builtin/pack-objects.c:2054
 msgid "Counting objects"
 msgstr "Đang đếm các đối tượng"
 
-#: builtin/pack-objects.c:2150
+#: builtin/pack-objects.c:2199
 #, 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:2220 builtin/pack-objects.c:2236
-#: builtin/pack-objects.c:2246
+#: builtin/pack-objects.c:2269 builtin/pack-objects.c:2285
+#: builtin/pack-objects.c:2295
 #, c-format
 msgid "object %s cannot be read"
 msgstr "không thể đọc đối tượng %s"
 
-#: builtin/pack-objects.c:2223 builtin/pack-objects.c:2250
+#: builtin/pack-objects.c:2272 builtin/pack-objects.c:2299
 #, 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:2260
+#: builtin/pack-objects.c:2309
 msgid "suboptimal pack - out of memory"
 msgstr "suboptimal pack - hết bộ nhớ"
 
-#: builtin/pack-objects.c:2575
+#: builtin/pack-objects.c:2624
 #, 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:2714
+#: builtin/pack-objects.c:2763
 #, 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:2802
+#: builtin/pack-objects.c:2851
 msgid "Compressing objects"
 msgstr "Đang nén các đối tượng"
 
-#: builtin/pack-objects.c:2808
+#: builtin/pack-objects.c:2857
 msgid "inconsistency with delta count"
 msgstr "mâu thuẫn với số lượng delta"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2929
+#, c-format
+msgid ""
+"value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
+"hash> <uri>' (got '%s')"
+msgstr ""
+"giá trị của uploadpack.blobpackfileuri phải có dạng '<object-hash> <pack-"
+"hash> <uri>' (nhận '%s')"
+
+#: builtin/pack-objects.c:2932
+#, c-format
+msgid ""
+"object already configured in another uploadpack.blobpackfileuri (got '%s')"
+msgstr ""
+"đối tượng đã được cấu hình trong một uploadpack.blobpackfileuri khác (đã "
+"nhận '%s')"
+
+#: builtin/pack-objects.c:2961
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -17410,7 +17588,7 @@
 "cần ID đối tượng cạnh, nhận được rác:\n"
 " %s"
 
-#: builtin/pack-objects.c:2895
+#: builtin/pack-objects.c:2967
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -17419,228 +17597,236 @@
 "cần ID đối tượng, nhận được rác:\n"
 " %s"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3065
 msgid "invalid value for --missing"
 msgstr "giá trị cho --missing không hợp lệ"
 
-#: builtin/pack-objects.c:3052 builtin/pack-objects.c:3160
+#: builtin/pack-objects.c:3124 builtin/pack-objects.c:3232
 msgid "cannot open pack index"
 msgstr "không thể mở mục lục của gói"
 
-#: builtin/pack-objects.c:3083
+#: builtin/pack-objects.c:3155
 #, 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:3168
+#: builtin/pack-objects.c:3240
 msgid "unable to force loose object"
 msgstr "không thể buộc mất đối tượng"
 
-#: builtin/pack-objects.c:3261
+#: builtin/pack-objects.c:3333
 #, c-format
 msgid "not a rev '%s'"
 msgstr "không phải một rev “%s”"
 
-#: builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3336
 #, c-format
 msgid "bad revision '%s'"
 msgstr "điểm xem xét sai “%s”"
 
-#: builtin/pack-objects.c:3289
+#: builtin/pack-objects.c:3361
 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:3342
+#: builtin/pack-objects.c:3414
 #, 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:3346
+#: builtin/pack-objects.c:3418
 #, c-format
 msgid "bad index version '%s'"
 msgstr "phiên bản mục lục sai “%s”"
 
-#: builtin/pack-objects.c:3384
+#: builtin/pack-objects.c:3456
 msgid "<version>[,<offset>]"
 msgstr "<phiên bản>[,offset]"
 
-#: builtin/pack-objects.c:3385
+#: builtin/pack-objects.c:3457
 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:3388
+#: builtin/pack-objects.c:3460
 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:3390
+#: builtin/pack-objects.c:3462
 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:3392
+#: builtin/pack-objects.c:3464
 msgid "ignore packed objects"
 msgstr "bỏ qua các đối tượng đóng gói"
 
-#: builtin/pack-objects.c:3394
+#: builtin/pack-objects.c:3466
 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:3396
+#: builtin/pack-objects.c:3468
 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:3398
+#: builtin/pack-objects.c:3470
 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:3400
+#: builtin/pack-objects.c:3472
 msgid "reuse existing deltas"
 msgstr "dùng lại các delta sẵn có"
 
-#: builtin/pack-objects.c:3402
+#: builtin/pack-objects.c:3474
 msgid "reuse existing objects"
 msgstr "dùng lại các đối tượng sẵn có"
 
-#: builtin/pack-objects.c:3404
+#: builtin/pack-objects.c:3476
 msgid "use OFS_DELTA objects"
 msgstr "dùng các đối tượng OFS_DELTA"
 
-#: builtin/pack-objects.c:3406
+#: builtin/pack-objects.c:3478
 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:3408
+#: builtin/pack-objects.c:3480
 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:3410
+#: builtin/pack-objects.c:3482
 msgid "read revision arguments from standard input"
 msgstr "đọc tham số “revision” từ thiết bị nhập chuẩn"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3484
 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:3415
+#: builtin/pack-objects.c:3487
 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:3418
+#: builtin/pack-objects.c:3490
 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:3421
+#: builtin/pack-objects.c:3493
 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:3424
+#: builtin/pack-objects.c:3496
 msgid "output pack to stdout"
 msgstr "xuất gói ra đầu ra tiêu chuẩn"
 
-#: builtin/pack-objects.c:3426
+#: builtin/pack-objects.c:3498
 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:3428
+#: builtin/pack-objects.c:3500
 msgid "keep unreachable objects"
 msgstr "giữ lại các đối tượng không thể đọc được"
 
-#: builtin/pack-objects.c:3430
+#: builtin/pack-objects.c:3502
 msgid "pack loose unreachable objects"
 msgstr "pack mất các đối tượng không thể đọc được"
 
-#: builtin/pack-objects.c:3432
+#: builtin/pack-objects.c:3504
 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:3435
+#: builtin/pack-objects.c:3507
 msgid "use the sparse reachability algorithm"
 msgstr "sử dụng thuật toán “sparse reachability”"
 
-#: builtin/pack-objects.c:3437
+#: builtin/pack-objects.c:3509
 msgid "create thin packs"
 msgstr "tạo gói nhẹ"
 
-#: builtin/pack-objects.c:3439
+#: builtin/pack-objects.c:3511
 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:3441
+#: builtin/pack-objects.c:3513
 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:3443
+#: builtin/pack-objects.c:3515
 msgid "ignore this pack"
 msgstr "bỏ qua gói này"
 
-#: builtin/pack-objects.c:3445
+#: builtin/pack-objects.c:3517
 msgid "pack compression level"
 msgstr "mức nén gói"
 
-#: builtin/pack-objects.c:3447
+#: builtin/pack-objects.c:3519
 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:3449
+#: builtin/pack-objects.c:3521
 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:3451
+#: builtin/pack-objects.c:3523
 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:3455
+#: builtin/pack-objects.c:3527
 msgid "write a bitmap index if possible"
 msgstr "ghi mục lục ánh xạ nếu được"
 
-#: builtin/pack-objects.c:3459
+#: builtin/pack-objects.c:3531
 msgid "handling for missing objects"
 msgstr "xử lý cho thiếu đối tượng"
 
-#: builtin/pack-objects.c:3462
+#: builtin/pack-objects.c:3534
 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:3464
+#: builtin/pack-objects.c:3536
 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:3493
+#: builtin/pack-objects.c:3538
+msgid "protocol"
+msgstr "giao thức"
+
+#: builtin/pack-objects.c:3539
+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:3568
 #, 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:3498
+#: builtin/pack-objects.c:3573
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "pack.deltaCacheLimit là quá cao, ép dùng %d"
 
-#: builtin/pack-objects.c:3552
+#: builtin/pack-objects.c:3627
 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:3554
+#: builtin/pack-objects.c:3629
 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:3559
+#: builtin/pack-objects.c:3634
 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:3562
+#: builtin/pack-objects.c:3637
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable và --unpack-unreachable xung khắc nhau"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3643
 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:3628
+#: builtin/pack-objects.c:3703
 msgid "Enumerating objects"
 msgstr "Đánh số các đối tượng"
 
-#: builtin/pack-objects.c:3658
+#: builtin/pack-objects.c:3734
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18958,7 +19144,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <thư-mục-git>"
 
-#: builtin/receive-pack.c:843
+#: builtin/receive-pack.c:844
 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"
@@ -18988,7 +19174,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:863
+#: builtin/receive-pack.c:864
 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"
@@ -19009,11 +19195,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:1960
+#: builtin/receive-pack.c:1970
 msgid "quiet"
 msgstr "im lặng"
 
-#: builtin/receive-pack.c:1974
+#: builtin/receive-pack.c:1984
 msgid "You must specify a directory."
 msgstr "Bạn phải chỉ định thư mục."
 
@@ -19960,7 +20146,7 @@
 
 #: builtin/replace.c:593
 msgid "bad number of arguments"
-msgstr "số đối số không đúng"
+msgstr "số lượng đối số không đúng"
 
 #: builtin/replace.c:599
 msgid "-e needs exactly one argument"
@@ -20554,6 +20740,14 @@
 msgid "cannot find commit %s (%s)"
 msgstr "không thể tìm thấy lần chuyển giao %s (%s)"
 
+#: builtin/show-index.c:21
+msgid "hash-algorithm"
+msgstr "thuật-toán-băm"
+
+#: builtin/show-index.c:31
+msgid "Unknown hash algorithm"
+msgstr "Không hiểu thuật toán băm dữ liệu"
+
 #: builtin/show-ref.c:12
 msgid ""
 "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
@@ -20612,50 +20806,54 @@
 "không thể phân tích cú pháp cây làm việc này (tập tin sparse-checkout có lẽ "
 "không tồn tại)"
 
-#: builtin/sparse-checkout.c:212
+#: builtin/sparse-checkout.c:216
 msgid "failed to create directory for sparse-checkout file"
 msgstr "gặp lỗi khi tạo thư mục cho tập tin sparse-checkout"
 
-#: builtin/sparse-checkout.c:253
+#: builtin/sparse-checkout.c:257
+msgid "unable to upgrade repository format to enable worktreeConfig"
+msgstr "không thể nâng cấp định dạng kho lưu trữ để kích hoạt worktreeConfig"
+
+#: builtin/sparse-checkout.c:259
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "gặp lỗi khi đặt cài đặt extensions.worktreeConfig"
 
-#: builtin/sparse-checkout.c:270
+#: builtin/sparse-checkout.c:276
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:289
+#: builtin/sparse-checkout.c:295
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "khởi tạo sparse-checkout trong chế độ nón"
 
-#: builtin/sparse-checkout.c:326
+#: builtin/sparse-checkout.c:332
 #, c-format
 msgid "failed to open '%s'"
 msgstr "gặp lỗi khi mở “%s”"
 
-#: builtin/sparse-checkout.c:383
+#: builtin/sparse-checkout.c:389
 #, c-format
 msgid "could not normalize path %s"
 msgstr "không thể thường hóa đường dẫn “%s”"
 
-#: builtin/sparse-checkout.c:395
+#: builtin/sparse-checkout.c:401
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <các mẫu>)"
 
-#: builtin/sparse-checkout.c:420
+#: builtin/sparse-checkout.c:426
 #, 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:474 builtin/sparse-checkout.c:498
+#: builtin/sparse-checkout.c:480 builtin/sparse-checkout.c:504
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "không thể tải các mẫu sparse-checkout"
 
-#: builtin/sparse-checkout.c:543
+#: builtin/sparse-checkout.c:549
 msgid "read patterns from standard in"
 msgstr "đọc các mẫu từ đầu vào tiêu chuẩn"
 
-#: builtin/sparse-checkout.c:580
+#: builtin/sparse-checkout.c:586
 msgid "error while refreshing working directory"
 msgstr "gặp lỗi khi đọc lại thư mục làm việc"
 
@@ -21361,12 +21559,41 @@
 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:2323 git.c:436 git.c:683
+#: builtin/submodule--helper.c:2294
+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:2296
+msgid "set the default tracking branch"
+msgstr "đặt nhánh theo dõi mặc định"
+
+#: builtin/submodule--helper.c:2300
+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:2301
+#| msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
+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:2308
+msgid "--branch or --default required"
+msgstr "cần --branch hoặc --default"
+
+#: builtin/submodule--helper.c:2311
+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:2367 git.c:436 git.c:683
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s không hỗ trợ --super-prefix"
 
-#: builtin/submodule--helper.c:2329
+#: builtin/submodule--helper.c:2373
 #, 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ệ"
@@ -22002,193 +22229,187 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock </đường/dẫn>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:894
+#: builtin/worktree.c:60 builtin/worktree.c:972
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "gặp lỗi khi xóa “%s”"
 
-#: builtin/worktree.c:79
-#, c-format
-msgid "Removing worktrees/%s: not a valid directory"
-msgstr "Gỡ bỏ cây làm việc/%s: không phải là thư mục hợp lệ"
-
 #: builtin/worktree.c:85
-#, c-format
-msgid "Removing worktrees/%s: gitdir file does not exist"
-msgstr "Gỡ bỏ cây làm việc/%s: không có tập tin gitdir"
+msgid "not a valid directory"
+msgstr "không phải thư mục hợp lệ"
 
-#: builtin/worktree.c:90 builtin/worktree.c:99
-#, c-format
-msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
-msgstr "Gỡ bỏ cây làm việc/%s: không thể đọc tập tin gitdir (%s)"
+#: builtin/worktree.c:91
+msgid "gitdir file does not exist"
+msgstr "tập tin gitdir không tồn tại"
 
-#: builtin/worktree.c:109
+#: builtin/worktree.c:96 builtin/worktree.c:105
 #, c-format
-msgid ""
-"Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
-"%<PRIuMAX>)"
-msgstr "Gỡ bỏ cây làm việc/%s: đọc ngắn (cần %<PRIuMAX> byte, đọc %<PRIuMAX>)"
+msgid "unable to read gitdir file (%s)"
+msgstr "không thể đọc tập tin gitdir (%s)"
 
-#: builtin/worktree.c:117
+#: builtin/worktree.c:115
 #, c-format
-msgid "Removing worktrees/%s: invalid gitdir file"
-msgstr "Gỡ bỏ cây làm việc/%s: tập tin gitdir không hợp lệ"
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "đọc ngắn (cần %<PRIuMAX> byte, đọc %<PRIuMAX>)"
 
-#: builtin/worktree.c:126
+#: builtin/worktree.c:123
+msgid "invalid gitdir file"
+msgstr "tập tin gitdir (thư mục git) không hợp lệ"
+
+#: builtin/worktree.c:131
+msgid "gitdir file points to non-existent location"
+msgstr "tập tin gitdir chỉ đến vị trí không tồn tại"
+
+#: builtin/worktree.c:146
 #, c-format
-msgid "Removing worktrees/%s: gitdir file points to non-existent location"
-msgstr "Gỡ bỏ cây làm việc/%s: tập tin gitdir chỉ đến vị trí không tồn tại"
+msgid "Removing %s/%s: %s"
+msgstr "Đang xóa %s/%s: %s"
 
-#: builtin/worktree.c:165
+#: builtin/worktree.c:221
 msgid "report pruned working trees"
 msgstr "báo cáo các cây làm việc đã prune"
 
-#: builtin/worktree.c:167
+#: builtin/worktree.c:223
 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:234
+#: builtin/worktree.c:293
 #, c-format
 msgid "'%s' already exists"
 msgstr "“%s” đã có từ trước rồi"
 
-#: builtin/worktree.c:244
+#: builtin/worktree.c:302
 #, c-format
-msgid "unable to re-add worktree '%s'"
-msgstr "không thể thêm-lại cây “%s”"
+msgid "unusable worktree destination '%s'"
+msgstr "đích cây làm việc không sử dụng được “%s”"
 
-#: builtin/worktree.c:249
+#: builtin/worktree.c:307
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
-"use 'add -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
+"use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
 "“%s” bị mất nhưng cây làm việc bị khóa;\n"
-"dùng “add -f -f” để ghi đè, hoặc “unlock” và “prune” hay “remove” để xóa"
+"dùng “%s -f -f” để ghi đè, hoặc “unlock” và “prune” hay “remove” để xóa"
 
-#: builtin/worktree.c:251
+#: builtin/worktree.c:309
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
-"use 'add -f' to override, or 'prune' or 'remove' to clear"
+"use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
 "“%s” bị mất nhưng cây làm việc đã được đăng ký;\n"
-"dùng “add -f” để ghi đè, hoặc “prune” hay “remove” để xóa"
+"dùng “%s -f” để ghi đè, hoặc “prune” hay “remove” để xóa"
 
-#: builtin/worktree.c:301
+#: builtin/worktree.c:360
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "không thể tạo thư mục của “%s”"
 
-#: builtin/worktree.c:435 builtin/worktree.c:441
+#: builtin/worktree.c:494 builtin/worktree.c:500
 #, 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:437
+#: builtin/worktree.c:496
 #, 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:446
+#: builtin/worktree.c:505
 #, 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:452
+#: builtin/worktree.c:511
 #, 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”)"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:552
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr "lấy ra <nhánh> ngay cả khi nó đã được lấy ra ở cây làm việc khác"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:555
 msgid "create a new branch"
 msgstr "tạo nhánh mới"
 
-#: builtin/worktree.c:498
+#: builtin/worktree.c:557
 msgid "create or reset a branch"
 msgstr "tạo hay đặt lại một nhánh"
 
-#: builtin/worktree.c:500
+#: builtin/worktree.c:559
 msgid "populate the new working tree"
 msgstr "di chuyển cây làm việc mới"
 
-#: builtin/worktree.c:501
+#: builtin/worktree.c:560
 msgid "keep the new working tree locked"
 msgstr "giữ cây làm việc mới bị khóa"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:563
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "cài đặt chế độ theo dõi (xem git-branch(1))"
 
-#: builtin/worktree.c:507
+#: builtin/worktree.c:566
 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:515
+#: builtin/worktree.c:574
 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:576
+#: builtin/worktree.c:635
 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:676
+#: builtin/worktree.c:755
 msgid "reason for locking"
 msgstr "lý do khóa"
 
-#: builtin/worktree.c:688 builtin/worktree.c:721 builtin/worktree.c:795
-#: builtin/worktree.c:922
+#: builtin/worktree.c:767 builtin/worktree.c:800 builtin/worktree.c:874
+#: builtin/worktree.c:1000
 #, 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:690 builtin/worktree.c:723
+#: builtin/worktree.c:769 builtin/worktree.c:802
 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:695
+#: builtin/worktree.c:774
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "“%s” đã được khóa rồi, lý do: %s"
 
-#: builtin/worktree.c:697
+#: builtin/worktree.c:776
 #, c-format
 msgid "'%s' is already locked"
 msgstr "“%s” đã được khóa rồi"
 
-#: builtin/worktree.c:725
+#: builtin/worktree.c:804
 #, c-format
 msgid "'%s' is not locked"
 msgstr "“%s” chưa bị khóa"
 
-#: builtin/worktree.c:766
+#: builtin/worktree.c:845
 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:774
+#: builtin/worktree.c:853
 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:797 builtin/worktree.c:924
+#: builtin/worktree.c:876 builtin/worktree.c:1002
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "“%s” là cây làm việc chính"
 
-#: builtin/worktree.c:802
+#: builtin/worktree.c:881
 #, 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:808
-#, c-format
-msgid "target '%s' already exists"
-msgstr "đích “%s” đã tồn tại rồi"
-
-#: builtin/worktree.c:816
+#: builtin/worktree.c:894
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -22197,7 +22418,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:818
+#: builtin/worktree.c:896
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -22205,38 +22426,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:821
+#: builtin/worktree.c:899
 #, 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:826
+#: builtin/worktree.c:904
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "gặp lỗi khi chuyển “%s” sang “%s”"
 
-#: builtin/worktree.c:874
+#: builtin/worktree.c:952
 #, 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:878
+#: builtin/worktree.c:956
 #, 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:883
+#: builtin/worktree.c:961
 #, 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:906
+#: builtin/worktree.c:984
 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:929
+#: builtin/worktree.c:1007
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -22245,7 +22466,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:931
+#: builtin/worktree.c:1009
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -22253,7 +22474,7 @@
 "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:934
+#: builtin/worktree.c:1012
 #, 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"
@@ -22274,33 +22495,33 @@
 msgid "only useful for debugging"
 msgstr "chỉ hữu ích khi cần gỡ lỗi"
 
-#: bugreport.c:14
+#: bugreport.c:15
 msgid "git version:\n"
 msgstr "phiên bản git:\n"
 
-#: bugreport.c:20
+#: bugreport.c:21
 #, c-format
 msgid "uname() failed with error '%s' (%d)\n"
 msgstr "uname() gặp lỗi '%s' (%d)\n"
 
-#: bugreport.c:30
+#: bugreport.c:31
 msgid "compiler info: "
 msgstr "thông tin trình biên dịch: "
 
-#: bugreport.c:32
+#: bugreport.c:34
 msgid "libc info: "
 msgstr "thông tin libc: "
 
-#: bugreport.c:74
+#: bugreport.c:80
 msgid "not run from a git repository - no hooks to show\n"
 msgstr "không chạy từ một kho git - nên chẳng có móc nào để mà hiển thị cả\n"
 
-#: bugreport.c:84
+#: bugreport.c:90
 msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
 msgstr ""
 "git bugreport [-o|--output-directory <tập_tin>] [-s|--suffix <định_dạng>]"
 
-#: bugreport.c:91
+#: bugreport.c:97
 msgid ""
 "Thank you for filling out a Git bug report!\n"
 "Please answer the following questions to help us understand your issue.\n"
@@ -22334,68 +22555,78 @@
 "Vui lòng xen xét phần còn lại của báo cáo lỗi bên dưới.\n"
 "Bạn có thể xóa bất kỳ dòng nào bạn không muốn chia sẻ.\n"
 
-#: bugreport.c:130
+#: bugreport.c:136
 msgid "specify a destination for the bugreport file"
 msgstr "chỉ định thư mục định để tạo tập tin báo cáo lỗi"
 
-#: bugreport.c:132
+#: bugreport.c:138
 msgid "specify a strftime format suffix for the filename"
 msgstr ""
 "chỉ định chuỗi định dạng thời gian strftime dùng làm hậu tố cho tên tập tin"
 
-#: bugreport.c:156
+#: bugreport.c:162
 #, c-format
 msgid "could not create leading directories for '%s'"
 msgstr "không thể tạo các thư mục dẫn đầu cho “%s”"
 
-#: bugreport.c:163
+#: bugreport.c:169
 msgid "System Info"
 msgstr "Thông tin hệ thống"
 
-#: bugreport.c:166
+#: bugreport.c:172
 msgid "Enabled Hooks"
 msgstr "Các Móc đã được bật"
 
-#: bugreport.c:174
+#: bugreport.c:180
 #, c-format
 msgid "couldn't create a new file at '%s'"
 msgstr "không thể tạo tập tin mới tại “%s”"
 
-#: bugreport.c:186
+#: bugreport.c:184
+#, c-format
+msgid "unable to write to %s"
+msgstr "không thể ghi vào %s"
+
+#: bugreport.c:194
 #, c-format
 msgid "Created new report at '%s'.\n"
 msgstr "Đã tạo báo cáo mới tại “%s”\n"
 
-#: fast-import.c:3085
+#: fast-import.c:3100
 #, c-format
 msgid "Missing from marks for submodule '%s'"
 msgstr "Thiếu các đánh dấu cho mô-đun-con “%s”"
 
-#: fast-import.c:3087
+#: fast-import.c:3102
 #, c-format
 msgid "Missing to marks for submodule '%s'"
 msgstr "Thiếu đánh dấu cho mô-đun-con “%s”"
 
-#: fast-import.c:3222
+#: fast-import.c:3237
 #, c-format
 msgid "Expected 'mark' command, got %s"
 msgstr "Cần lệnh 'mark', nhưng lại nhận được %s"
 
-#: fast-import.c:3227
+#: fast-import.c:3242
 #, c-format
 msgid "Expected 'to' command, got %s"
 msgstr "Cần lệnh 'to', nhưng lại nhận được %s"
 
-#: fast-import.c:3317
+#: fast-import.c:3334
 msgid "Expected format name:filename for submodule rewrite option"
 msgstr "Cần định dạng tên:tên_tập_tin cho tùy chọn ghi lại mô-đun-con"
 
-#: fast-import.c:3371
+#: fast-import.c:3388
 #, c-format
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr ""
 "tính năng ' %s ' bị cấm chỉ trong đầu vào mà không có --allow-unsafe-features"
 
+#: http-fetch.c:111
+#, c-format
+msgid "argument to --packfile must be a valid hash (got '%s')"
+msgstr "tham số cho --packfile phải là một giá trị băm hợp lệ (nhận được '%s')"
+
 #: credential-cache--daemon.c:223
 #, c-format
 msgid ""
@@ -22574,34 +22805,34 @@
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr "Chốt khóa công không được hỗ trợ với cURL < 7.44.0"
 
-#: http.c:914
+#: http.c:910
 msgid "CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0"
 msgstr "CURLSSLOPT_NO_REVOKE không được hỗ trợ với cURL < 7.44.0"
 
-#: http.c:993
+#: http.c:989
 msgid "Protocol restrictions not supported with cURL < 7.19.4"
 msgstr "Các hạn chế giao thức không được hỗ trợ với cURL < 7.19.4"
 
-#: http.c:1139
+#: http.c:1132
 #, c-format
 msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
 msgstr ""
 "Không hỗ trợ ứng dụng SSL chạy phía sau “%s”. Hỗ trợ ứng dụng SSL chạy phía "
 "sau:"
 
-#: http.c:1146
+#: http.c:1139
 #, c-format
 msgid "Could not set SSL backend to '%s': cURL was built without SSL backends"
 msgstr ""
 "Không thể đặt ứng dụng chạy SSL phía sau “%s”: cURL được biên dịch không có "
 "sự hỗ trợ ứng dụng chạy phía sau SSL"
 
-#: http.c:1150
+#: http.c:1143
 #, c-format
 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:2032
+#: http.c:2025
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -22612,113 +22843,136 @@
 "      hỏi cho: %s\n"
 " chuyển hướng: %s"
 
-#: remote-curl.c:166
+#: remote-curl.c:168
 #, c-format
 msgid "invalid quoting in push-option value: '%s'"
 msgstr "sai trích dẫn trong giá trị push-option :“%s”"
 
-#: remote-curl.c:263
+#: remote-curl.c:295
 #, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
 msgstr "%sinfo/refs không hợp lệ: đây có phải là một kho git?"
 
-#: remote-curl.c:364
+#: remote-curl.c:396
 msgid "invalid server response; expected service, got flush packet"
 msgstr ""
 "đáp ứng từ máy phục vụ không hợp lệ; cần dịch vụ, nhưng lại nhận được gói "
 "flush"
 
-#: remote-curl.c:395
+#: remote-curl.c:427
 #, c-format
 msgid "invalid server response; got '%s'"
 msgstr "trả về của máy phục vụ không hợp lệ; nhận được %s"
 
-#: remote-curl.c:455
+#: remote-curl.c:487
 #, c-format
 msgid "repository '%s' not found"
 msgstr "không tìm thấy kho “%s”"
 
-#: remote-curl.c:459
+#: remote-curl.c:491
 #, c-format
 msgid "Authentication failed for '%s'"
 msgstr "Xác thực gặp lỗi cho “%s”"
 
-#: remote-curl.c:463
+#: remote-curl.c:495
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr "không thể truy cập “%s”: %s"
 
-#: remote-curl.c:469
+#: remote-curl.c:501
 #, c-format
 msgid "redirecting to %s"
 msgstr "chuyển hướng đến %s"
 
-#: remote-curl.c:593
+#: remote-curl.c:630
 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:673
+#: remote-curl.c:642
+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:712
 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:733
+#: remote-curl.c:742
+#, 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:744
+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:820
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC gặp lỗi; %s"
 
-#: remote-curl.c:773
+#: remote-curl.c:860
 msgid "cannot handle pushes this big"
 msgstr "không thể xử lý đẩy cái lớn này"
 
-#: remote-curl.c:888
+#: remote-curl.c:975
 #, 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:892
+#: remote-curl.c:979
 #, 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:1023
+#: remote-curl.c:1029
+#, 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:1031
+#, 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:1120
 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:1038
+#: remote-curl.c:1135
 msgid "fetch failed."
 msgstr "lấy về gặp lỗi."
 
-#: remote-curl.c:1086
+#: remote-curl.c:1183
 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:1130 remote-curl.c:1136
+#: remote-curl.c:1227 remote-curl.c:1233
 #, 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:1148 remote-curl.c:1263
+#: remote-curl.c:1245 remote-curl.c:1360
 #, c-format
 msgid "http transport does not support %s"
 msgstr "vận chuyển http không hỗ trợ %s"
 
-#: remote-curl.c:1184
+#: remote-curl.c:1281
 msgid "git-http-push failed"
 msgstr "git-http-push gặp lỗi"
 
-#: remote-curl.c:1369
+#: remote-curl.c:1466
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl: usage: git remote-curl <máy chủ> [<url>]"
 
-#: remote-curl.c:1401
+#: remote-curl.c:1498
 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:1408
+#: remote-curl.c:1505
 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:1448
+#: remote-curl.c:1546
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl: không hiểu lệnh “%s” từ git"
@@ -23762,26 +24016,26 @@
 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”"
 
-#: git-submodule.sh:878
+#: git-submodule.sh:852
 msgid "The --cached option cannot be used with the --files option"
 msgstr "Tùy chọn --cached không thể dùng cùng với tùy chọn --files"
 
-#: git-submodule.sh:930
+#: git-submodule.sh:904
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "chế độ không như mong chờ $mod_dst"
 
-#: git-submodule.sh:950
+#: git-submodule.sh:924
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr "  Cảnh báo: $display_name không chứa lần chuyển giao $sha1_src"
 
-#: git-submodule.sh:953
+#: git-submodule.sh:927
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr "  Cảnh báo: $display_name không chứa lần chuyển giao $sha1_dst"
 
-#: git-submodule.sh:956
+#: git-submodule.sh:930
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -24094,7 +24348,7 @@
 #: git-rebase--preserve-merges.sh:900
 #, sh-format
 msgid "Could not checkout $switch_to"
-msgstr "Không thể checkout $switch_to"
+msgstr "Không thể lấy ra $switch_to"
 
 #: git-rebase--preserve-merges.sh:907
 msgid "No HEAD?"
@@ -24201,7 +24455,7 @@
 msgid_plural "touched %d paths\n"
 msgstr[0] "%d đường dẫn đã touch (chạm)\n"
 
-#: git-add--interactive.perl:1053
+#: git-add--interactive.perl:1055
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -24209,7 +24463,7 @@
 "Nếu miếng vá được áp dụng sạch sẽ, khúc đã sửa sẽ ngay lập tức\n"
 "được đánh dấu để chuyển lên bệ phóng."
 
-#: git-add--interactive.perl:1056
+#: git-add--interactive.perl:1058
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -24217,7 +24471,7 @@
 "Nếu miếng vá được áp dụng sạch sẽ, khúc đã sửa sẽ ngay lập tức\n"
 "được đánh dấu để tạm cất."
 
-#: git-add--interactive.perl:1059
+#: git-add--interactive.perl:1061
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -24225,8 +24479,8 @@
 "Nếu miếng vá được áp dụng sạch sẽ, khúc đã sửa sẽ ngay lập tức\n"
 "được đánh dấu để bỏ chuyển lên bệ phóng."
 
-#: git-add--interactive.perl:1062 git-add--interactive.perl:1071
-#: git-add--interactive.perl:1077
+#: git-add--interactive.perl:1064 git-add--interactive.perl:1073
+#: git-add--interactive.perl:1079
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -24234,8 +24488,8 @@
 "Nếu miếng vá được áp dụng sạch sẽ, khúc đã sửa sẽ ngay lập tức\n"
 "được đánh dấu để áp dụng."
 
-#: git-add--interactive.perl:1065 git-add--interactive.perl:1068
-#: git-add--interactive.perl:1074
+#: git-add--interactive.perl:1067 git-add--interactive.perl:1070
+#: git-add--interactive.perl:1076
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -24243,12 +24497,12 @@
 "Nếu miếng vá được áp dụng sạch sẽ, khúc đã sửa sẽ ngay lập tức\n"
 "được đánh dấu để loại bỏ."
 
-#: git-add--interactive.perl:1111
+#: git-add--interactive.perl:1113
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "gặp lỗi khi tập tin sửa khúc để ghi: %s"
 
-#: git-add--interactive.perl:1118
+#: git-add--interactive.perl:1120
 #, perl-format
 msgid ""
 "---\n"
@@ -24261,12 +24515,12 @@
 "Để xóa bỏ dòng “%s”, xóa chúng đi.\n"
 "Những dòng bắt đầu bằng %s sẽ bị loại bỏ.\n"
 
-#: git-add--interactive.perl:1140
+#: git-add--interactive.perl:1142
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "gặp lỗi khi mở tập tin khúc để đọc: %s"
 
-#: git-add--interactive.perl:1248
+#: git-add--interactive.perl:1250
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -24281,7 +24535,7 @@
 "d - đừng đưa lên bệ phóng khúc này cũng như bất kỳ cái nào còn lại trong tập "
 "tin"
 
-#: git-add--interactive.perl:1254
+#: git-add--interactive.perl:1256
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -24295,7 +24549,7 @@
 "a - tạm cất khúc này và tất cả các khúc sau này trong tập tin\n"
 "d - đừng tạm cất khúc này cũng như bất kỳ cái nào còn lại trong tập tin"
 
-#: git-add--interactive.perl:1260
+#: git-add--interactive.perl:1262
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -24311,7 +24565,7 @@
 "d - đừng đưa ra khỏi bệ phóng khúc này cũng như bất kỳ cái nào còn lại trong "
 "tập tin"
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1268
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -24325,7 +24579,7 @@
 "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"
 
-#: git-add--interactive.perl:1272 git-add--interactive.perl:1290
+#: git-add--interactive.perl:1274 git-add--interactive.perl:1292
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -24339,7 +24593,7 @@
 "a - loại bỏ khúc này và tất cả các khúc sau này trong tập tin\n"
 "d - đừng loại bỏ khúc này cũng như bất kỳ cái nào sau này trong tập tin"
 
-#: git-add--interactive.perl:1278
+#: git-add--interactive.perl:1280
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -24353,7 +24607,7 @@
 "a - loại bỏ khúc này và tất cả các khúc sau này trong tập tin\n"
 "d - đừng loại bỏ khúc này cũng như bất kỳ cái nào sau này trong tập tin"
 
-#: git-add--interactive.perl:1284
+#: git-add--interactive.perl:1286
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -24367,7 +24621,7 @@
 "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"
 
-#: git-add--interactive.perl:1296
+#: git-add--interactive.perl:1298
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -24381,7 +24635,7 @@
 "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"
 
-#: git-add--interactive.perl:1311
+#: git-add--interactive.perl:1313
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -24403,83 +24657,88 @@
 "e - sửa bằng tay khúc hiện hành\n"
 "? - in trợ giúp\n"
 
-#: git-add--interactive.perl:1342
+#: git-add--interactive.perl:1344
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "Các khúc đã chọn không được áp dụng vào bảng mục lục!\n"
 
-#: git-add--interactive.perl:1357
+#: git-add--interactive.perl:1359
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "bỏ qua những thứ chưa hòa trộn: %s\n"
 
-#: git-add--interactive.perl:1468
+#: git-add--interactive.perl:1478
 #, perl-format
 msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
 msgstr "Áp dụng thay đổi chế độ cho cây làm việc [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1469
+#: git-add--interactive.perl:1479
 #, perl-format
 msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
 msgstr "Áp dụng việc xóa cho cây làm việc [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1470
+#: git-add--interactive.perl:1480
+#, perl-format
+msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
+msgstr "Áp dụng việc thêm cho cây làm việc [y,n,q,a,d%s,?]? "
+
+#: git-add--interactive.perl:1481
 #, perl-format
 msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
 msgstr "Áp dụng khúc này vào cây làm việc [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1570
+#: git-add--interactive.perl:1587
 msgid "No other hunks to goto\n"
 msgstr "Không còn khúc nào để mà nhảy đến\n"
 
-#: git-add--interactive.perl:1588
+#: git-add--interactive.perl:1605
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Số không hợp lệ: “%s”\n"
 
-#: git-add--interactive.perl:1593
+#: git-add--interactive.perl:1610
 #, perl-format
 msgid "Sorry, only %d hunk available.\n"
 msgid_plural "Sorry, only %d hunks available.\n"
 msgstr[0] "Rất tiếc, chỉ có sẵn %d khúc.\n"
 
-#: git-add--interactive.perl:1619
+#: git-add--interactive.perl:1636
 msgid "No other hunks to search\n"
 msgstr "Không còn khúc nào để mà tìm kiếm\n"
 
-#: git-add--interactive.perl:1636
+#: git-add--interactive.perl:1653
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Định dạng tìm kiếm của biểu thức chính quy không đúng %s: %s\n"
 
-#: git-add--interactive.perl:1646
+#: git-add--interactive.perl:1663
 msgid "No hunk matches the given pattern\n"
 msgstr "Không thấy khúc nào khớp mẫu đã cho\n"
 
-#: git-add--interactive.perl:1658 git-add--interactive.perl:1680
+#: git-add--interactive.perl:1675 git-add--interactive.perl:1697
 msgid "No previous hunk\n"
 msgstr "Không có khúc kế trước\n"
 
-#: git-add--interactive.perl:1667 git-add--interactive.perl:1686
+#: git-add--interactive.perl:1684 git-add--interactive.perl:1703
 msgid "No next hunk\n"
 msgstr "Không có khúc kế tiếp\n"
 
-#: git-add--interactive.perl:1692
+#: git-add--interactive.perl:1709
 msgid "Sorry, cannot split this hunk\n"
 msgstr "Rất tiếc, không thể chia nhỏ khúc này\n"
 
-#: git-add--interactive.perl:1698
+#: git-add--interactive.perl:1715
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
 msgstr[0] "Chi nhỏ thành %d khúc.\n"
 
-#: git-add--interactive.perl:1708
+#: git-add--interactive.perl:1725
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "Rất tiếc, không thể sửa khúc này\n"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1773
+#: git-add--interactive.perl:1790
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -24499,19 +24758,19 @@
 "add untracked - thêm nội dung các các tập tin chưa theo dõi và tập hợp các "
 "thay đổi đã đặt lên bệ phóng\n"
 
-#: git-add--interactive.perl:1790 git-add--interactive.perl:1795
-#: git-add--interactive.perl:1798 git-add--interactive.perl:1805
-#: git-add--interactive.perl:1808 git-add--interactive.perl:1815
-#: git-add--interactive.perl:1819 git-add--interactive.perl:1825
+#: git-add--interactive.perl:1807 git-add--interactive.perl:1812
+#: git-add--interactive.perl:1815 git-add--interactive.perl:1822
+#: git-add--interactive.perl:1825 git-add--interactive.perl:1832
+#: git-add--interactive.perl:1836 git-add--interactive.perl:1842
 msgid "missing --"
 msgstr "thiếu --"
 
-#: git-add--interactive.perl:1821
+#: git-add--interactive.perl:1838
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "không hiểu chế độ --patch: %s"
 
-#: git-add--interactive.perl:1827 git-add--interactive.perl:1833
+#: git-add--interactive.perl:1844 git-add--interactive.perl:1850
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "đối số không hợp lệ %s, cần --"
@@ -24824,61 +25083,91 @@
 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:1718
+#: git-send-email.perl:1722
 #, 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:1753
+#: git-send-email.perl:1757
 #, 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:1864
+#: git-send-email.perl:1868
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Không thể thực thi “%s”"
 
-#: git-send-email.perl:1871
+#: git-send-email.perl:1875
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Đang thêm %s: %s từ: “%s”\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1879
 #, 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:1905
+#: git-send-email.perl:1909
 msgid "cannot send message as 7bit"
 msgstr "không thể lấy gửi thư dạng 7 bít"
 
-#: git-send-email.perl:1913
+#: git-send-email.perl:1917
 msgid "invalid transfer encoding"
 msgstr "bảng mã truyền không hợp lệ"
 
-#: git-send-email.perl:1954 git-send-email.perl:2006 git-send-email.perl:2016
+#: git-send-email.perl:1958 git-send-email.perl:2010 git-send-email.perl:2020
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "không thể mở %s: %s\n"
 
-#: git-send-email.perl:1957
+#: git-send-email.perl:1961
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr "%s: miếng vá có chứa dòng dài hơn 998 ký tự"
 
-#: git-send-email.perl:1974
+#: git-send-email.perl:1978
 #, 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:1978
+#: git-send-email.perl:1982
 #, 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): "
 
 #, c-format
+#~ msgid "Finding commits for commit graph from %d ref"
+#~ msgid_plural "Finding commits for commit graph from %d refs"
+#~ msgstr[0] ""
+#~ "Đang tìm các lần chuyển giao cho đồ thị lần chuyển giao từ %d tham chiếu"
+
+#, c-format
+#~ msgid "invalid commit object id: %s"
+#~ msgstr "mã số đối tượng lần chuyển giao không hợp lệ: %s"
+
+#, c-format
+#~ msgid "Removing worktrees/%s: not a valid directory"
+#~ msgstr "Gỡ bỏ cây làm việc/%s: không phải là thư mục hợp lệ"
+
+#, c-format
+#~ msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
+#~ msgstr "Gỡ bỏ cây làm việc/%s: không thể đọc tập tin gitdir (%s)"
+
+#, c-format
+#~ msgid "Removing worktrees/%s: invalid gitdir file"
+#~ msgstr "Gỡ bỏ cây làm việc/%s: tập tin gitdir không hợp lệ"
+
+#, c-format
+#~ msgid "unable to re-add worktree '%s'"
+#~ msgstr "không thể thêm-lại cây “%s”"
+
+#, c-format
+#~ msgid "target '%s' already exists"
+#~ msgstr "đích “%s” đã tồn tại rồi"
+
+#, c-format
 #~ msgid ""
 #~ "Cannot update sparse checkout: the following entries are not up to date:\n"
 #~ "%s"
@@ -25043,7 +25332,7 @@
 #~ msgstr "không thể chép “%s” sang “%s”."
 
 #~ msgid "malformed ident line"
-#~ msgstr "thụt đầu dòng dị hình"
+#~ msgstr "dòng định danh không hợp lệ"
 
 #~ msgid "corrupted author without date information"
 #~ msgstr "tác giả sai hỏng không có thông tin này tháng"
@@ -26104,9 +26393,6 @@
 #~ msgid "insanely long template path %s"
 #~ msgstr "đường dẫn mẫu “%s” dài một cách điên rồ"
 
-#~ msgid "unsupported sort specification '%s'"
-#~ msgstr "không hỗ trợ đặc tả sắp xếp “%s”"
-
 #~ msgid "unsupported sort specification '%s' in variable '%s'"
 #~ msgstr "không hỗ trợ đặc tả sắp xếp “%s” trong biến “%s”"
 
diff --git a/po/zh_CN.po b/po/zh_CN.po
index ee0e6be..a531819 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -139,8 +139,8 @@
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-05-27 07:23+0800\n"
-"PO-Revision-Date: 2020-05-27 07:39+0800\n"
+"POT-Creation-Date: 2020-07-10 09:53+0800\n"
+"PO-Revision-Date: 2020-07-17 10: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"
@@ -242,21 +242,21 @@
 msgid "ignoring unmerged: %s"
 msgstr "忽略未合入的:%s"
 
-#: add-interactive.c:929 add-patch.c:1675 git-add--interactive.perl:1366
+#: add-interactive.c:929 add-patch.c:1691 git-add--interactive.perl:1368
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "只有二进制文件被修改。\n"
 
-#: add-interactive.c:931 add-patch.c:1673 git-add--interactive.perl:1368
+#: add-interactive.c:931 add-patch.c:1689 git-add--interactive.perl:1370
 #, c-format
 msgid "No changes.\n"
 msgstr "没有修改。\n"
 
-#: add-interactive.c:935 git-add--interactive.perl:1376
+#: add-interactive.c:935 git-add--interactive.perl:1378
 msgid "Patch update"
 msgstr "补丁更新"
 
-#: add-interactive.c:974 git-add--interactive.perl:1754
+#: add-interactive.c:974 git-add--interactive.perl:1771
 msgid "Review diff"
 msgstr "检视 diff"
 
@@ -324,11 +324,11 @@
 msgid "(empty) select nothing"
 msgstr "(空)不选择任何内容"
 
-#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1851
+#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1868
 msgid "*** Commands ***"
 msgstr "*** 命令 ***"
 
-#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1848
+#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1865
 msgid "What now"
 msgstr "请选择"
 
@@ -345,7 +345,7 @@
 #: builtin/merge.c:276 builtin/pull.c:190 builtin/submodule--helper.c:409
 #: builtin/submodule--helper.c:1394 builtin/submodule--helper.c:1397
 #: builtin/submodule--helper.c:1902 builtin/submodule--helper.c:1905
-#: builtin/submodule--helper.c:2148 bugreport.c:129
+#: builtin/submodule--helper.c:2148 bugreport.c:135
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "路径"
@@ -354,33 +354,38 @@
 msgid "could not refresh index"
 msgstr "不能刷新索引"
 
-#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1765
+#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1782
 #, c-format
 msgid "Bye.\n"
 msgstr "再见。\n"
 
-#: add-patch.c:34 git-add--interactive.perl:1428
+#: add-patch.c:34 git-add--interactive.perl:1430
 #, c-format, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "暂存模式变更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:35 git-add--interactive.perl:1429
+#: add-patch.c:35 git-add--interactive.perl:1431
 #, c-format, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "暂存删除动作 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:36 git-add--interactive.perl:1430
+#: add-patch.c:36 git-add--interactive.perl:1432
+#, c-format, perl-format
+msgid "Stage addition [y,n,q,a,d%s,?]? "
+msgstr "暂存添加动作 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:37 git-add--interactive.perl:1433
 #, c-format, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "暂存该块 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:38
+#: add-patch.c:39
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "staging."
 msgstr "如果补丁能正确地应用,编辑块将立即标记为暂存。"
 
-#: add-patch.c:41
+#: add-patch.c:42
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -394,28 +399,33 @@
 "a - 暂存该块和本文件中后面的全部块\n"
 "d - 不暂存该块和本文件中后面的全部块\n"
 
-#: add-patch.c:55 git-add--interactive.perl:1433
+#: add-patch.c:56 git-add--interactive.perl:1436
 #, c-format, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "贮藏模式变更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:56 git-add--interactive.perl:1434
+#: add-patch.c:57 git-add--interactive.perl:1437
 #, c-format, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "贮藏删除动作 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:57 git-add--interactive.perl:1435
+#: add-patch.c:58 git-add--interactive.perl:1438
+#, c-format, perl-format
+msgid "Stash addition [y,n,q,a,d%s,?]? "
+msgstr "贮藏添加动作 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:59 git-add--interactive.perl:1439
 #, c-format, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "贮藏该块 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:59
+#: add-patch.c:61
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "stashing."
 msgstr "如果补丁能正确地应用,编辑块将立即标记为贮藏。"
 
-#: add-patch.c:62
+#: add-patch.c:64
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -429,28 +439,33 @@
 "a - 贮藏该块和本文件中后面的全部块\n"
 "d - 不贮藏该块和本文件中后面的全部块\n"
 
-#: add-patch.c:78 git-add--interactive.perl:1438
+#: add-patch.c:80 git-add--interactive.perl:1442
 #, c-format, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr "取消暂存模式变更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:79 git-add--interactive.perl:1439
+#: add-patch.c:81 git-add--interactive.perl:1443
 #, c-format, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "取消暂存删除动作 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:80 git-add--interactive.perl:1440
+#: add-patch.c:82 git-add--interactive.perl:1444
+#, c-format, perl-format
+msgid "Unstage addition [y,n,q,a,d%s,?]? "
+msgstr "取消暂存添加动作 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:83 git-add--interactive.perl:1445
 #, c-format, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "取消暂存该块 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:82
+#: add-patch.c:85
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "unstaging."
 msgstr "如果补丁能正确地应用,编辑块将立即标记为未暂存。"
 
-#: add-patch.c:85
+#: add-patch.c:88
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -464,28 +479,33 @@
 "a - 取消暂存该块和本文件中后面的全部块\n"
 "d - 不要取消暂存该块和本文件中后面的全部块\n"
 
-#: add-patch.c:100 git-add--interactive.perl:1443
+#: add-patch.c:103 git-add--interactive.perl:1448
 #, c-format, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr "将模式变更应用到索引 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:101 git-add--interactive.perl:1444
+#: add-patch.c:104 git-add--interactive.perl:1449
 #, c-format, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "将删除操作应用到索引 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:102 git-add--interactive.perl:1445
+#: add-patch.c:105 git-add--interactive.perl:1450
+#, c-format, perl-format
+msgid "Apply addition to index [y,n,q,a,d%s,?]? "
+msgstr "将添加操作应用到索引 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:106 git-add--interactive.perl:1451
 #, c-format, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr "将该块应用到索引 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:104 add-patch.c:169 add-patch.c:212
+#: 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 "如果补丁能正确地应用,编辑块将立即标记为应用。"
 
-#: add-patch.c:107
+#: add-patch.c:111
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -499,31 +519,37 @@
 "a - 应用该块和本文件中后面的全部块\n"
 "d - 不要应用该块和本文件中后面的全部块\n"
 
-#: add-patch.c:122 git-add--interactive.perl:1448
-#: git-add--interactive.perl:1463
+#: add-patch.c:126 git-add--interactive.perl:1454
+#: git-add--interactive.perl:1472
 #, c-format, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr "从工作区中丢弃模式变更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:123 git-add--interactive.perl:1449
-#: git-add--interactive.perl:1464
+#: add-patch.c:127 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
 #, c-format, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr "从工作区中丢弃删除动作 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:124 git-add--interactive.perl:1450
-#: git-add--interactive.perl:1465
+#: add-patch.c:128 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
+#, c-format, perl-format
+msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
+msgstr "从工作区中丢弃添加动作 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:129 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
 #, c-format, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr "从工作区中丢弃该块 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:126 add-patch.c:148 add-patch.c:191
+#: 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 "如果补丁能正确地应用,编辑块将立即标记为丢弃。"
 
-#: add-patch.c:129 add-patch.c:194
+#: add-patch.c:134 add-patch.c:202
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -537,22 +563,27 @@
 "a - 丢弃该块和本文件中后面的全部块\n"
 "d - 不要丢弃该块和本文件中后面的全部块\n"
 
-#: add-patch.c:144 add-patch.c:187 git-add--interactive.perl:1453
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1460
 #, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "从索引和工作区中丢弃模式变更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:145 add-patch.c:188 git-add--interactive.perl:1454
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1461
 #, c-format, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
-msgstr "从索引和工作区中丢弃删除 [y,n,q,a,d%s,?]? "
+msgstr "从索引和工作区中丢弃删除动作 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:146 add-patch.c:189 git-add--interactive.perl:1455
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1462
+#, c-format, perl-format
+msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
+msgstr "从索引和工作区中丢弃添加动作 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1463
 #, c-format, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "从索引和工作区中丢弃该块 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:151
+#: add-patch.c:157
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -566,22 +597,27 @@
 "a - 丢弃该块和本文件中后面的全部块\n"
 "d - 不要丢弃该块和本文件中后面的全部块\n"
 
-#: add-patch.c:165 add-patch.c:208 git-add--interactive.perl:1458
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1466
 #, c-format, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "将模式变更应用到索引和工作区 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:166 add-patch.c:209 git-add--interactive.perl:1459
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1467
 #, c-format, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "将删除操作应用到索引和工作区 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:167 add-patch.c:210 git-add--interactive.perl:1460
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1468
+#, c-format, perl-format
+msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
+msgstr "将添加操作应用到索引和工作区 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1469
 #, c-format, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "将该块应用到索引和工作区 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:172
+#: add-patch.c:179
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -595,7 +631,7 @@
 "a - 应用该块和本文件中后面的全部块\n"
 "d - 不要应用该块和本文件中后面的全部块\n"
 
-#: add-patch.c:215
+#: add-patch.c:224
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -609,40 +645,40 @@
 "a - 应用该块和本文件中后面的全部块\n"
 "d - 不要应用该块和本文件中后面的全部块\n"
 
-#: add-patch.c:319
+#: add-patch.c:328
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "无法解析数据块头信息 '%.*s'"
 
-#: add-patch.c:338 add-patch.c:342
+#: add-patch.c:347 add-patch.c:351
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "无法解析彩色数据块头信息 '%.*s'"
 
-#: add-patch.c:396
+#: add-patch.c:405
 msgid "could not parse diff"
 msgstr "不能解析差异信息"
 
-#: add-patch.c:415
+#: add-patch.c:424
 msgid "could not parse colored diff"
 msgstr "不能解析彩色差异信息"
 
-#: add-patch.c:429
+#: add-patch.c:438
 #, c-format
 msgid "failed to run '%s'"
 msgstr "运行 '%s' 失败"
 
-#: add-patch.c:588
+#: add-patch.c:602
 msgid "mismatched output from interactive.diffFilter"
 msgstr "interactive.diffFilter 的输出不匹配"
 
-#: add-patch.c:589
+#: add-patch.c:603
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
 msgstr "您的过滤器必须在其输入和输出的行之间保持一一对应的关系。"
 
-#: add-patch.c:762
+#: add-patch.c:776
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -651,7 +687,7 @@
 "预期上下文行 #%d 于\n"
 "%.*s"
 
-#: add-patch.c:777
+#: add-patch.c:791
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -664,11 +700,11 @@
 "\t不是结尾于:\n"
 "%.*s"
 
-#: add-patch.c:1053 git-add--interactive.perl:1112
+#: add-patch.c:1067 git-add--interactive.perl:1114
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "手动块编辑模式 -- 查看底部的快速指南。\n"
 
-#: add-patch.c:1057
+#: add-patch.c:1071
 #, c-format
 msgid ""
 "---\n"
@@ -682,7 +718,7 @@
 "以 %c 开始的行将被删除。\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1071 git-add--interactive.perl:1126
+#: add-patch.c:1085 git-add--interactive.perl:1128
 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"
@@ -691,11 +727,11 @@
 "如果不能干净地应用,您将有机会重新编辑。如果该块的全部内容删除,则\n"
 "此次编辑被终止,该块不会被修改。\n"
 
-#: add-patch.c:1104
+#: add-patch.c:1118
 msgid "could not parse hunk header"
 msgstr "无法解析数据块头信息"
 
-#: add-patch.c:1149
+#: add-patch.c:1163
 msgid "'git apply --cached' failed"
 msgstr "'git apply --cached' 失败"
 
@@ -711,24 +747,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:1218 git-add--interactive.perl:1239
+#: add-patch.c:1232 git-add--interactive.perl:1241
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr "您的编辑块不能被应用。重新编辑(选择 \"no\" 丢弃!) [y/n]? "
 
-#: add-patch.c:1261
+#: add-patch.c:1275
 msgid "The selected hunks do not apply to the index!"
 msgstr "选中的块不能应用到索引!"
 
-#: add-patch.c:1262 git-add--interactive.perl:1343
+#: add-patch.c:1276 git-add--interactive.perl:1345
 msgid "Apply them to the worktree anyway? "
 msgstr "无论如何都要应用到工作区么?"
 
-#: add-patch.c:1269 git-add--interactive.perl:1346
+#: add-patch.c:1283 git-add--interactive.perl:1348
 msgid "Nothing was applied.\n"
 msgstr "未应用。\n"
 
-#: add-patch.c:1326
+#: add-patch.c:1340
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -750,69 +786,69 @@
 "e - 手动编辑当前块\n"
 "? - 显示帮助\n"
 
-#: add-patch.c:1447 add-patch.c:1457
+#: add-patch.c:1463 add-patch.c:1473
 msgid "No previous hunk"
 msgstr "没有前一个块"
 
-#: add-patch.c:1452 add-patch.c:1462
+#: add-patch.c:1468 add-patch.c:1478
 msgid "No next hunk"
 msgstr "没有下一个块"
 
-#: add-patch.c:1468
+#: add-patch.c:1484
 msgid "No other hunks to goto"
 msgstr "没有其它可供跳转的块"
 
-#: add-patch.c:1479 git-add--interactive.perl:1577
+#: add-patch.c:1495 git-add--interactive.perl:1594
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "跳转到哪个块(<回车> 查看更多)? "
 
-#: add-patch.c:1480 git-add--interactive.perl:1579
+#: add-patch.c:1496 git-add--interactive.perl:1596
 msgid "go to which hunk? "
 msgstr "跳转到哪个块?"
 
-#: add-patch.c:1491
+#: add-patch.c:1507
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "无效数字:'%s'"
 
-#: add-patch.c:1496
+#: add-patch.c:1512
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "对不起,只有 %d 个可用块。"
 msgstr[1] "对不起,只有 %d 个可用块。"
 
-#: add-patch.c:1505
+#: add-patch.c:1521
 msgid "No other hunks to search"
 msgstr "没有其它可供查找的块"
 
-#: add-patch.c:1511 git-add--interactive.perl:1623
+#: add-patch.c:1527 git-add--interactive.perl:1640
 msgid "search for regex? "
 msgstr "使用正则表达式搜索?"
 
-#: add-patch.c:1526
+#: add-patch.c:1542
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "错误的正则表达式 %s:%s"
 
-#: add-patch.c:1543
+#: add-patch.c:1559
 msgid "No hunk matches the given pattern"
 msgstr "没有和给定模式相匹配的块"
 
-#: add-patch.c:1550
+#: add-patch.c:1566
 msgid "Sorry, cannot split this hunk"
 msgstr "对不起,不能拆分这个块"
 
-#: add-patch.c:1554
+#: add-patch.c:1570
 #, c-format
 msgid "Split into %d hunks."
 msgstr "拆分为 %d 块。"
 
-#: add-patch.c:1558
+#: add-patch.c:1574
 msgid "Sorry, cannot edit this hunk"
 msgstr "对不起,不能编辑这个块"
 
-#: add-patch.c:1609
+#: add-patch.c:1625
 msgid "'git apply' failed"
 msgstr "'git apply' 失败"
 
@@ -1484,7 +1520,7 @@
 
 #: apply.c:5008 builtin/am.c:2238 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3458 builtin/rebase.c:1332
+#: builtin/pack-objects.c:3530 builtin/rebase.c:1332
 msgid "action"
 msgstr "动作"
 
@@ -1573,7 +1609,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "路径太长(%d 字符,SHA1:%s):%s"
 
-#: archive-zip.c:480 builtin/pack-objects.c:232 builtin/pack-objects.c:235
+#: archive-zip.c:480 builtin/pack-objects.c:243 builtin/pack-objects.c:246
 #, c-format
 msgid "deflate error (%d)"
 msgstr "压缩错误 (%d)"
@@ -1642,8 +1678,8 @@
 msgstr "为归档中每个路径名加上前缀"
 
 #: archive.c:467 builtin/blame.c:861 builtin/blame.c:865 builtin/blame.c:866
-#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1162
-#: builtin/fast-export.c:1164 builtin/fast-export.c:1168 builtin/grep.c:907
+#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1208
+#: builtin/fast-export.c:1210 builtin/fast-export.c:1214 builtin/grep.c:907
 #: 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
@@ -1867,10 +1903,10 @@
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr "--reverse 和 --first-parent 共用,需要指定最新的提交"
 
-#: blame.c:2821 bundle.c:167 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
+#: blame.c:2821 bundle.c:187 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
 #: sequencer.c:4466 submodule.c:847 builtin/commit.c:1047 builtin/log.c:405
 #: builtin/log.c:1012 builtin/log.c:1541 builtin/log.c:1945 builtin/log.c:2235
-#: builtin/merge.c:415 builtin/pack-objects.c:3276 builtin/pack-objects.c:3291
+#: builtin/merge.c:415 builtin/pack-objects.c:3348 builtin/pack-objects.c:3363
 #: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr "版本遍历设置失败"
@@ -2023,84 +2059,88 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "工作区 %s 的 HEAD 指向没有被更新"
 
-#: bundle.c:36
+#: bundle.c:47
 #, c-format
 msgid "'%s' does not look like a v2 bundle file"
 msgstr "'%s' 不像是一个 v2 版本的包文件"
 
-#: bundle.c:64
+#: bundle.c:69
+msgid "unknown hash algorithm length"
+msgstr "未知的哈希算法长度"
+
+#: bundle.c:84
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "未能识别的包头:%s%s (%d)"
 
-#: bundle.c:90 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
+#: bundle.c:110 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
 msgstr "不能打开 '%s'"
 
-#: bundle.c:143
+#: bundle.c:163
 msgid "Repository lacks these prerequisite commits:"
 msgstr "仓库中缺少这些必备的提交:"
 
-#: bundle.c:146
+#: bundle.c:166
 msgid "need a repository to verify a bundle"
 msgstr "需要一个仓库来校验一个包"
 
-#: bundle.c:197
+#: bundle.c:217
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "这个包中含有这个引用:"
 msgstr[1] "这个包中含有 %d 个引用:"
 
-#: bundle.c:204
+#: bundle.c:224
 msgid "The bundle records a complete history."
 msgstr "这个包记录一个完整历史。"
 
-#: bundle.c:206
+#: bundle.c:226
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "这个包需要这个引用:"
 msgstr[1] "这个包需要 %d 个引用:"
 
-#: bundle.c:273
+#: bundle.c:293
 msgid "unable to dup bundle descriptor"
 msgstr "无法复制 bundle 描述符"
 
-#: bundle.c:280
+#: bundle.c:300
 msgid "Could not spawn pack-objects"
 msgstr "不能生成 pack-objects 进程"
 
-#: bundle.c:291
+#: bundle.c:311
 msgid "pack-objects died"
 msgstr "pack-objects 终止"
 
-#: bundle.c:333
+#: bundle.c:353
 msgid "rev-list died"
 msgstr "rev-list 终止"
 
-#: bundle.c:382
+#: bundle.c:402
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "引用 '%s' 被 rev-list 选项排除"
 
-#: bundle.c:461 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
+#: bundle.c:481 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "未能识别的参数:%s"
 
-#: bundle.c:469
+#: bundle.c:489
 msgid "Refusing to create empty bundle."
 msgstr "不能创建空包。"
 
-#: bundle.c:479
+#: bundle.c:499
 #, c-format
 msgid "cannot create '%s'"
 msgstr "不能创建 '%s'"
 
-#: bundle.c:504
+#: bundle.c:524
 msgid "index-pack died"
 msgstr "index-pack 终止"
 
@@ -2109,269 +2149,261 @@
 msgid "invalid color value: %.*s"
 msgstr "无效的颜色值:%.*s"
 
-#: commit-graph.c:183
+#: commit-graph.c:238
 msgid "commit-graph file is too small"
 msgstr "提交图形文件太小"
 
-#: commit-graph.c:248
+#: commit-graph.c:303
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "提交图形签名 %X 和签名 %X 不匹配"
 
-#: commit-graph.c:255
+#: commit-graph.c:310
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "提交图形版本 %X 和版本 %X 不匹配"
 
-#: commit-graph.c:262
+#: commit-graph.c:317
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "提交图形哈希版本 %X 和版本 %X 不匹配"
 
-#: commit-graph.c:284
+#: commit-graph.c:339
 msgid "commit-graph chunk lookup table entry missing; file may be incomplete"
 msgstr "提交图形块查找表条目丢失,文件可能不完整"
 
-#: commit-graph.c:294
+#: commit-graph.c:349
 #, c-format
 msgid "commit-graph improper chunk offset %08x%08x"
 msgstr "提交图形不正确的块偏移 %08x%08x"
 
-#: commit-graph.c:362
+#: commit-graph.c:417
 #, c-format
 msgid "commit-graph chunk id %08x appears multiple times"
 msgstr "提交图形块 id %08x 出现了多次"
 
-#: commit-graph.c:436
+#: commit-graph.c:491
 msgid "commit-graph has no base graphs chunk"
 msgstr "提交图形没有基础图形块"
 
-#: commit-graph.c:446
+#: commit-graph.c:501
 msgid "commit-graph chain does not match"
 msgstr "提交图形链不匹配"
 
-#: commit-graph.c:494
+#: commit-graph.c:549
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "无效的提交图形链:行 '%s' 不是一个哈希值"
 
-#: commit-graph.c:518
+#: commit-graph.c:573
 msgid "unable to find all commit-graph files"
 msgstr "无法找到所有提交图形文件"
 
-#: commit-graph.c:651 commit-graph.c:711
+#: commit-graph.c:706 commit-graph.c:770
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr "无效的提交位置。提交图形可能已损坏"
 
-#: commit-graph.c:672
+#: commit-graph.c:727
 #, c-format
 msgid "could not find commit %s"
 msgstr "无法找到提交 %s"
 
-#: commit-graph.c:948 builtin/am.c:1292
+#: commit-graph.c:1009 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "不能解析提交 %s"
 
-#: commit-graph.c:1096
+#: commit-graph.c:1157
 msgid "Writing changed paths Bloom filters index"
 msgstr "编写变更路径的 Bloom 过滤器索引"
 
-#: commit-graph.c:1121
+#: commit-graph.c:1182
 msgid "Writing changed paths Bloom filters data"
 msgstr "编写变更路径的 Bloom 过滤器数据"
 
-#: commit-graph.c:1160 builtin/pack-objects.c:2783
+#: commit-graph.c:1221 builtin/pack-objects.c:2832
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "无法获得对象 %s 类型"
 
-#: commit-graph.c:1196
+#: commit-graph.c:1257
 msgid "Loading known commits in commit graph"
 msgstr "正在加载提交图中的已知提交"
 
-#: commit-graph.c:1213
+#: commit-graph.c:1274
 msgid "Expanding reachable commits in commit graph"
 msgstr "正在扩展提交图中的可达提交"
 
-#: commit-graph.c:1233
+#: commit-graph.c:1294
 msgid "Clearing commit marks in commit graph"
 msgstr "正在清除提交图中的提交标记"
 
-#: commit-graph.c:1252
+#: commit-graph.c:1313
 msgid "Computing commit graph generation numbers"
 msgstr "正在计算提交图世代数字"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1367
 msgid "Computing commit changed paths Bloom filters"
 msgstr "计算提交变更路径的 Bloom 过滤器"
 
-#: commit-graph.c:1359
+#: commit-graph.c:1423
+msgid "Collecting referenced commits"
+msgstr "正在收集引用的提交"
+
+#: commit-graph.c:1447
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "正在 %d 个包中查找提交图的提交"
 msgstr[1] "正在 %d 个包中查找提交图的提交"
 
-#: commit-graph.c:1372
+#: commit-graph.c:1460
 #, c-format
 msgid "error adding pack %s"
 msgstr "添加包 %s 出错"
 
-#: commit-graph.c:1376
+#: commit-graph.c:1464
 #, c-format
 msgid "error opening index for %s"
 msgstr "为 %s 打开索引出错"
 
-#: commit-graph.c:1405
-#, c-format
-msgid "Finding commits for commit graph from %d ref"
-msgid_plural "Finding commits for commit graph from %d refs"
-msgstr[0] "正在从 %d 个引用中查找提交图的提交"
-msgstr[1] "正在从 %d 个引用中查找提交图的提交"
-
-#: commit-graph.c:1426
-#, c-format
-msgid "invalid commit object id: %s"
-msgstr "无效的提交对象 ID:%s"
-
-#: commit-graph.c:1442
+#: commit-graph.c:1503
 msgid "Finding commits for commit graph among packed objects"
 msgstr "正在打包对象中查找提交图的提交"
 
-#: commit-graph.c:1457
+#: commit-graph.c:1518
 msgid "Counting distinct commits in commit graph"
 msgstr "正在计算提交图中不同的提交"
 
-#: commit-graph.c:1489
+#: commit-graph.c:1550
 msgid "Finding extra edges in commit graph"
 msgstr "正在查找提交图中额外的边"
 
-#: commit-graph.c:1538
+#: commit-graph.c:1599
 msgid "failed to write correct number of base graph ids"
 msgstr "无法写入正确数量的基础图形 ID"
 
-#: commit-graph.c:1572 midx.c:812
+#: commit-graph.c:1633 midx.c:812
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "不能为 %s 创建先导目录"
 
-#: commit-graph.c:1585
+#: commit-graph.c:1646
 msgid "unable to create temporary graph layer"
 msgstr "无法创建临时图层"
 
-#: commit-graph.c:1590
+#: commit-graph.c:1651
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "无法为 '%s' 调整共享权限"
 
-#: commit-graph.c:1667
+#: commit-graph.c:1728
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "正在用 %d 步写出提交图"
 msgstr[1] "正在用 %d 步写出提交图"
 
-#: commit-graph.c:1712
+#: commit-graph.c:1773
 msgid "unable to open commit-graph chain file"
 msgstr "无法打开提交图形链文件"
 
-#: commit-graph.c:1728
+#: commit-graph.c:1789
 msgid "failed to rename base commit-graph file"
 msgstr "无法重命名基础提交图形文件"
 
-#: commit-graph.c:1748
+#: commit-graph.c:1809
 msgid "failed to rename temporary commit-graph file"
 msgstr "无法重命名临时提交图形文件"
 
-#: commit-graph.c:1874
+#: commit-graph.c:1935
 msgid "Scanning merged commits"
 msgstr "正在扫描合并提交"
 
-#: commit-graph.c:1885
+#: commit-graph.c:1946
 #, c-format
 msgid "unexpected duplicate commit id %s"
 msgstr "意外的重复提交 ID %s"
 
-#: commit-graph.c:1908
+#: commit-graph.c:1969
 msgid "Merging commit-graph"
 msgstr "正在合并提交图形"
 
-#: commit-graph.c:2096
+#: commit-graph.c:2156
 #, c-format
 msgid "the commit graph format cannot write %d commits"
 msgstr "提交图格式不能写入 %d 个提交"
 
-#: commit-graph.c:2107
+#: commit-graph.c:2167
 msgid "too many commits to write graph"
 msgstr "提交太多不能画图"
 
-#: commit-graph.c:2200
+#: commit-graph.c:2260
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr "提交图文件的校验码错误,可能已经损坏"
 
-#: commit-graph.c:2210
+#: commit-graph.c:2270
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "提交图形的对象 ID 顺序不正确:%s 然后 %s"
 
-#: commit-graph.c:2220 commit-graph.c:2235
+#: commit-graph.c:2280 commit-graph.c:2295
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "提交图形有不正确的扇出值:fanout[%d] = %u != %u"
 
-#: commit-graph.c:2227
+#: commit-graph.c:2287
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "无法从提交图形中解析提交 %s"
 
-#: commit-graph.c:2245
+#: commit-graph.c:2305
 msgid "Verifying commits in commit graph"
 msgstr "正在校验提交图中的提交"
 
-#: commit-graph.c:2259
+#: commit-graph.c:2320
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr "无法从提交图形的对象库中解析提交 %s"
 
-#: commit-graph.c:2266
+#: commit-graph.c:2327
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr "提交图形中的提交 %s 的根树对象 ID 是 %s != %s"
 
-#: commit-graph.c:2276
+#: commit-graph.c:2337
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "提交 %s 的提交图形父提交列表太长了"
 
-#: commit-graph.c:2285
+#: commit-graph.c:2346
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "%s 的提交图形父提交是 %s != %s"
 
-#: commit-graph.c:2298
+#: commit-graph.c:2360
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "提交 %s 的提交图形父提交列表过早终止"
 
-#: commit-graph.c:2303
+#: commit-graph.c:2365
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr "提交图形中提交 %s 的世代号是零,但其它地方非零"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2369
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr "提交图形中提交 %s 的世代号非零,但其它地方是零"
 
-#: commit-graph.c:2322
+#: commit-graph.c:2385
 #, c-format
 msgid "commit-graph generation for commit %s is %u != %u"
 msgstr "提交图形中的提交 %s 的世代号是 %u != %u"
 
-#: commit-graph.c:2328
+#: commit-graph.c:2391
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr "提交图形中提交 %s 的提交日期是 %<PRIuMAX> != %<PRIuMAX>"
@@ -2407,27 +2439,27 @@
 "设置 \"git config advice.graftFileDeprecated false\"\n"
 "可关闭本消息"
 
-#: commit.c:1168
+#: commit.c:1172
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr "提交 %s 有一个非可信的声称来自 %s 的 GPG 签名。"
 
-#: commit.c:1172
+#: commit.c:1176
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "提交 %s 有一个错误的声称来自 %s 的 GPG 签名。"
 
-#: commit.c:1175
+#: commit.c:1179
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "提交 %s 没有 GPG 签名。"
 
-#: commit.c:1178
+#: commit.c:1182
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "提交 %s 有一个来自 %s 的好的 GPG 签名。\n"
 
-#: commit.c:1432
+#: commit.c:1436
 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"
@@ -2615,7 +2647,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "必须是其中之一:nothing、matching、simple、upstream 或 current"
 
-#: config.c:1533 builtin/pack-objects.c:3542
+#: config.c:1533 builtin/pack-objects.c:3617
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "错误的打包压缩级别 %d"
@@ -2763,72 +2795,81 @@
 msgid "server doesn't support '%s'"
 msgstr "服务器不支持 '%s'"
 
-#: connect.c:103
+#: connect.c:118
 #, c-format
 msgid "server doesn't support feature '%s'"
 msgstr "服务器不支持特性 '%s'"
 
-#: connect.c:114
+#: connect.c:129
 msgid "expected flush after capabilities"
 msgstr "在能力之后应为一个 flush 包"
 
-#: connect.c:233
+#: connect.c:263
 #, c-format
 msgid "ignoring capabilities after first line '%s'"
 msgstr "忽略第一行 '%s' 之后的能力字段"
 
-#: connect.c:252
+#: connect.c:284
 msgid "protocol error: unexpected capabilities^{}"
 msgstr "协议错误:意外的 capabilities^{}"
 
-#: connect.c:273
+#: connect.c:306
 #, c-format
 msgid "protocol error: expected shallow sha-1, got '%s'"
 msgstr "协议错误:预期浅克隆 sha-1,却得到 '%s'"
 
-#: connect.c:275
+#: connect.c:308
 msgid "repository on the other end cannot be shallow"
 msgstr "另一端的仓库不能是浅克隆仓库"
 
-#: connect.c:313
+#: connect.c:347
 msgid "invalid packet"
 msgstr "无效数据包"
 
-#: connect.c:333
+#: connect.c:367
 #, c-format
 msgid "protocol error: unexpected '%s'"
 msgstr "协议错误:意外的 '%s'"
 
-#: connect.c:441
+#: connect.c:473
+#, c-format
+msgid "unknown object format '%s' specified by server"
+msgstr "服务器给出未知的对象格式 '%s'"
+
+#: connect.c:500
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "无效的 ls-refs 响应:%s"
 
-#: connect.c:445
+#: connect.c:504
 msgid "expected flush after ref listing"
 msgstr "在引用列表之后应该有一个 flush 包"
 
-#: connect.c:544
+#: connect.c:507
+msgid "expected response end packet after ref listing"
+msgstr "在引用列表之后应该有响应结束包"
+
+#: connect.c:640
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "不支持 '%s' 协议"
 
-#: connect.c:595
+#: connect.c:691
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "无法为 socket 设置 SO_KEEPALIVE"
 
-#: connect.c:635 connect.c:698
+#: connect.c:731 connect.c:794
 #, c-format
 msgid "Looking up %s ... "
 msgstr "查找 %s ..."
 
-#: connect.c:639
+#: connect.c:735
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "无法查找 %s(端口 %s)(%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:643 connect.c:714
+#: connect.c:739 connect.c:810
 #, c-format
 msgid ""
 "done.\n"
@@ -2837,7 +2878,7 @@
 "完成。\n"
 "连接到 %s(端口 %s)... "
 
-#: connect.c:665 connect.c:742
+#: connect.c:761 connect.c:838
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2847,73 +2888,73 @@
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:671 connect.c:748
+#: connect.c:767 connect.c:844
 msgid "done."
 msgstr "完成。"
 
-#: connect.c:702
+#: connect.c:798
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "无法查找 %s(%s)"
 
-#: connect.c:708
+#: connect.c:804
 #, c-format
 msgid "unknown port %s"
 msgstr "未知端口 %s"
 
-#: connect.c:845 connect.c:1175
+#: connect.c:941 connect.c:1271
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "已阻止奇怪的主机名 '%s'"
 
-#: connect.c:847
+#: connect.c:943
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "已阻止奇怪的端口号 '%s'"
 
-#: connect.c:857
+#: connect.c:953
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "不能启动代理 %s"
 
-#: connect.c:928
+#: connect.c:1024
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr "未指定路径,执行 'git help pull' 查看有效的 url 语法"
 
-#: connect.c:1123
+#: connect.c:1219
 msgid "ssh variant 'simple' does not support -4"
 msgstr "ssh 变体 'simple' 不支持 -4"
 
-#: connect.c:1135
+#: connect.c:1231
 msgid "ssh variant 'simple' does not support -6"
 msgstr "ssh 变体 'simple' 不支持 -6"
 
-#: connect.c:1152
+#: connect.c:1248
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "ssh 变体 'simple' 不支持设置端口"
 
-#: connect.c:1264
+#: connect.c:1360
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "已阻止奇怪的路径名 '%s'"
 
-#: connect.c:1311
+#: connect.c:1407
 msgid "unable to fork"
 msgstr "无法 fork"
 
-#: connected.c:107 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:109 builtin/fsck.c:209 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "正在检查连通性"
 
-#: connected.c:119
+#: connected.c:121
 msgid "Could not run 'git rev-list'"
 msgstr "不能执行 'git rev-list'"
 
-#: connected.c:139
+#: connected.c:141
 msgid "failed write to rev-list"
 msgstr "写入 rev-list 失败"
 
-#: connected.c:146
+#: connected.c:148
 msgid "failed to close rev-list's stdin"
 msgstr "关闭 rev-list 的标准输入失败"
 
@@ -3172,18 +3213,18 @@
 msgstr "不是一个 git 仓库。使用 --no-index 比较工作区之外的两个路径"
 
 #  译者:注意保持前导空格
-#: diff.c:155
+#: diff.c:156
 #, c-format
 msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
 msgstr "  无法解析 dirstat 截止(cut-off)百分比 '%s'\n"
 
 #  译者:注意保持前导空格
-#: diff.c:160
+#: diff.c:161
 #, c-format
 msgid "  Unknown dirstat parameter '%s'\n"
 msgstr "  未知的 dirstat 参数 '%s'\n"
 
-#: diff.c:296
+#: diff.c:297
 msgid ""
 "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
 "'dimmed-zebra', 'plain'"
@@ -3191,7 +3232,7 @@
 "移动的颜色设置必须是 'no'、'default'、'blocks'、'zebra'、'dimmed_zebra' 或 "
 "'plain'"
 
-#: diff.c:324
+#: diff.c:325
 #, c-format
 msgid ""
 "unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', "
@@ -3200,18 +3241,18 @@
 "未知的 color-moved-ws 模式 '%s',可能的取值有 'ignore-space-change'、'ignore-"
 "space-at-eol'、'ignore-all-space'、'allow-indentation-change'"
 
-#: diff.c:332
+#: diff.c:333
 msgid ""
 "color-moved-ws: allow-indentation-change cannot be combined with other "
 "whitespace modes"
 msgstr "color-moved-ws:allow-indentation-change 不能与其它空白字符模式共用"
 
-#: diff.c:405
+#: diff.c:410
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
 msgstr "配置变量 'diff.submodule' 未知的取值:'%s'"
 
-#: diff.c:465
+#: diff.c:470
 #, c-format
 msgid ""
 "Found errors in 'diff.dirstat' config variable:\n"
@@ -3220,35 +3261,35 @@
 "发现配置变量 'diff.dirstat' 中的错误:\n"
 "%s"
 
-#: diff.c:4238
+#: diff.c:4243
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "外部 diff 退出,停止在 %s"
 
-#: diff.c:4583
+#: diff.c:4589
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only、--name-status、--check 和 -s 是互斥的"
 
-#: diff.c:4586
+#: diff.c:4592
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G、-S 和 --find-object 是互斥的"
 
-#: diff.c:4664
+#: diff.c:4670
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow 明确要求只跟一个路径规格"
 
-#: diff.c:4712
+#: diff.c:4718
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "无效的 --stat 值:%s"
 
-#: diff.c:4717 diff.c:4722 diff.c:4727 diff.c:4732 diff.c:5245
+#: diff.c:4723 diff.c:4728 diff.c:4733 diff.c:4738 diff.c:5250
 #: parse-options.c:197 parse-options.c:201
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s 期望一个数字值"
 
-#: diff.c:4749
+#: diff.c:4755
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3257,195 +3298,195 @@
 "无法解析 --dirstat/-X 选项的参数:\n"
 "%s"
 
-#: diff.c:4834
+#: diff.c:4840
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "--diff-filter=%2$s 中未知的变更类 '%1$c'"
 
-#: diff.c:4858
+#: diff.c:4864
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "ws-error-highlight=%.*s 之后未知的值"
 
-#: diff.c:4872
+#: diff.c:4878
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "不能解析 '%s'"
 
-#: diff.c:4922 diff.c:4928
+#: diff.c:4928 diff.c:4934
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s 期望 <n>/<m> 格式"
 
-#: diff.c:4940
+#: diff.c:4946
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s 期望一个字符,得到 '%s'"
 
-#: diff.c:4961
+#: diff.c:4967
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "坏的 --color-moved 参数:%s"
 
-#: diff.c:4980
+#: diff.c:4986
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "--color-moved-ws 中的无效模式 '%s' "
 
-#: diff.c:5020
+#: diff.c:5026
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 msgstr ""
 "diff-algorithm 选项有 \"myers\"、\"minimal\"、\"patience\" 和 \"histogram\""
 
-#: diff.c:5056 diff.c:5076
+#: diff.c:5062 diff.c:5082
 #, c-format
 msgid "invalid argument to %s"
 msgstr "%s 的参数无效"
 
-#: diff.c:5214
+#: diff.c:5219
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "无法解析 --submodule 选项的参数:'%s'"
 
-#: diff.c:5270
+#: diff.c:5275
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "坏的 --word-diff 参数:%s"
 
-#: diff.c:5293
+#: diff.c:5298
 msgid "Diff output format options"
 msgstr "差异输出格式化选项"
 
-#: diff.c:5295 diff.c:5301
+#: diff.c:5300 diff.c:5306
 msgid "generate patch"
 msgstr "生成补丁"
 
-#: diff.c:5298 builtin/log.c:177
+#: diff.c:5303 builtin/log.c:177
 msgid "suppress diff output"
 msgstr "不显示差异输出"
 
-#: diff.c:5303 diff.c:5417 diff.c:5424
+#: diff.c:5308 diff.c:5422 diff.c:5429
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5304 diff.c:5307
+#: diff.c:5309 diff.c:5312
 msgid "generate diffs with <n> lines context"
 msgstr "生成含 <n> 行上下文的差异"
 
-#: diff.c:5309
+#: diff.c:5314
 msgid "generate the diff in raw format"
 msgstr "生成原始格式的差异"
 
-#: diff.c:5312
+#: diff.c:5317
 msgid "synonym for '-p --raw'"
 msgstr "和 '-p --raw' 同义"
 
-#: diff.c:5316
+#: diff.c:5321
 msgid "synonym for '-p --stat'"
 msgstr "和 '-p --stat' 同义"
 
-#: diff.c:5320
+#: diff.c:5325
 msgid "machine friendly --stat"
 msgstr "机器友好的 --stat"
 
-#: diff.c:5323
+#: diff.c:5328
 msgid "output only the last line of --stat"
 msgstr "只输出 --stat 的最后一行"
 
-#: diff.c:5325 diff.c:5333
+#: diff.c:5330 diff.c:5338
 msgid "<param1,param2>..."
 msgstr "<参数1,参数2>..."
 
-#: diff.c:5326
+#: diff.c:5331
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr "输出每个子目录相对变更的分布"
 
-#: diff.c:5330
+#: diff.c:5335
 msgid "synonym for --dirstat=cumulative"
 msgstr "和 --dirstat=cumulative 同义"
 
-#: diff.c:5334
+#: diff.c:5339
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "是 --dirstat=files,param1,param2... 的同义词"
 
-#: diff.c:5338
+#: diff.c:5343
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr "如果变更中引入冲突定界符或空白错误,给出警告"
 
-#: diff.c:5341
+#: diff.c:5346
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr "精简摘要,例如创建、重命名和模式变更"
 
-#: diff.c:5344
+#: diff.c:5349
 msgid "show only names of changed files"
 msgstr "只显示变更文件的文件名"
 
-#: diff.c:5347
+#: diff.c:5352
 msgid "show only names and status of changed files"
 msgstr "只显示变更文件的文件名和状态"
 
-#: diff.c:5349
+#: diff.c:5354
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<宽度>[,<文件名宽度>[,<次数>]]"
 
-#: diff.c:5350
+#: diff.c:5355
 msgid "generate diffstat"
 msgstr "生成差异统计(diffstat)"
 
-#: diff.c:5352 diff.c:5355 diff.c:5358
+#: diff.c:5357 diff.c:5360 diff.c:5363
 msgid "<width>"
 msgstr "<宽度>"
 
-#: diff.c:5353
+#: diff.c:5358
 msgid "generate diffstat with a given width"
 msgstr "使用给定的长度生成差异统计"
 
-#: diff.c:5356
+#: diff.c:5361
 msgid "generate diffstat with a given name width"
 msgstr "使用给定的文件名长度生成差异统计"
 
-#: diff.c:5359
+#: diff.c:5364
 msgid "generate diffstat with a given graph width"
 msgstr "使用给定的图形长度生成差异统计"
 
-#: diff.c:5361
+#: diff.c:5366
 msgid "<count>"
 msgstr "<次数>"
 
-#: diff.c:5362
+#: diff.c:5367
 msgid "generate diffstat with limited lines"
 msgstr "生成有限行数的差异统计"
 
-#: diff.c:5365
+#: diff.c:5370
 msgid "generate compact summary in diffstat"
 msgstr "生成差异统计的简洁摘要"
 
-#: diff.c:5368
+#: diff.c:5373
 msgid "output a binary diff that can be applied"
 msgstr "输出一个可以应用的二进制差异"
 
-#: diff.c:5371
+#: diff.c:5376
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr "在 \"index\" 行显示完整的前后对象名称"
 
-#: diff.c:5373
+#: diff.c:5378
 msgid "show colored diff"
 msgstr "显示带颜色的差异"
 
-#: diff.c:5374
+#: diff.c:5379
 msgid "<kind>"
 msgstr "<类型>"
 
-#: diff.c:5375
+#: diff.c:5380
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr "对于差异中的上下文、旧的和新的行,加亮显示错误的空白字符"
 
-#: diff.c:5378
+#: diff.c:5383
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3453,295 +3494,295 @@
 "在 --raw 或者 --numstat 中,不对路径字符转码并使用 NUL 字符做为输出字段的分隔"
 "符"
 
-#: diff.c:5381 diff.c:5384 diff.c:5387 diff.c:5493
+#: diff.c:5386 diff.c:5389 diff.c:5392 diff.c:5498
 msgid "<prefix>"
 msgstr "<前缀>"
 
-#: diff.c:5382
+#: diff.c:5387
 msgid "show the given source prefix instead of \"a/\""
 msgstr "显示给定的源前缀取代 \"a/\""
 
-#: diff.c:5385
+#: diff.c:5390
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "显示给定的目标前缀取代 \"b/\""
 
-#: diff.c:5388
+#: diff.c:5393
 msgid "prepend an additional prefix to every line of output"
 msgstr "输出的每一行附加前缀"
 
-#: diff.c:5391
+#: diff.c:5396
 msgid "do not show any source or destination prefix"
 msgstr "不显示任何源和目标前缀"
 
-#: diff.c:5394
+#: diff.c:5399
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr "显示指定行数的差异块间的上下文"
 
-#: diff.c:5398 diff.c:5403 diff.c:5408
+#: diff.c:5403 diff.c:5408 diff.c:5413
 msgid "<char>"
 msgstr "<字符>"
 
-#: diff.c:5399
+#: diff.c:5404
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "指定一个字符取代 '+' 来表示新的一行"
 
-#: diff.c:5404
+#: diff.c:5409
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "指定一个字符取代 '-' 来表示旧的一行"
 
-#: diff.c:5409
+#: diff.c:5414
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "指定一个字符取代 ' ' 来表示一行上下文"
 
-#: diff.c:5412
+#: diff.c:5417
 msgid "Diff rename options"
 msgstr "差异重命名选项"
 
-#: diff.c:5413
+#: diff.c:5418
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5414
+#: diff.c:5419
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "将完全重写的变更打破为成对的删除和创建"
 
-#: diff.c:5418
+#: diff.c:5423
 msgid "detect renames"
 msgstr "检测重命名"
 
-#: diff.c:5422
+#: diff.c:5427
 msgid "omit the preimage for deletes"
 msgstr "省略删除操作的差异输出"
 
-#: diff.c:5425
+#: diff.c:5430
 msgid "detect copies"
 msgstr "检测拷贝"
 
-#: diff.c:5429
+#: diff.c:5434
 msgid "use unmodified files as source to find copies"
 msgstr "使用未修改的文件做为发现拷贝的源"
 
-#: diff.c:5431
+#: diff.c:5436
 msgid "disable rename detection"
 msgstr "禁用重命名探测"
 
-#: diff.c:5434
+#: diff.c:5439
 msgid "use empty blobs as rename source"
 msgstr "使用空的数据对象做为重命名的源"
 
-#: diff.c:5436
+#: diff.c:5441
 msgid "continue listing the history of a file beyond renames"
 msgstr "继续列出文件重命名以外的历史记录"
 
-#: diff.c:5439
+#: diff.c:5444
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr "如果重命名/拷贝目标超过给定的限制,禁止重命名/拷贝检测"
 
-#: diff.c:5441
+#: diff.c:5446
 msgid "Diff algorithm options"
 msgstr "差异算法选项"
 
-#: diff.c:5443
+#: diff.c:5448
 msgid "produce the smallest possible diff"
 msgstr "生成尽可能小的差异"
 
-#: diff.c:5446
+#: diff.c:5451
 msgid "ignore whitespace when comparing lines"
 msgstr "行比较时忽略空白字符"
 
-#: diff.c:5449
+#: diff.c:5454
 msgid "ignore changes in amount of whitespace"
 msgstr "忽略空白字符的变更"
 
-#: diff.c:5452
+#: diff.c:5457
 msgid "ignore changes in whitespace at EOL"
 msgstr "忽略行尾的空白字符变更"
 
-#: diff.c:5455
+#: diff.c:5460
 msgid "ignore carrier-return at the end of line"
 msgstr "忽略行尾的回车符(CR)"
 
-#: diff.c:5458
+#: diff.c:5463
 msgid "ignore changes whose lines are all blank"
 msgstr "忽略整行都是空白的变更"
 
-#: diff.c:5461
+#: diff.c:5466
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "启发式转换差异边界以便阅读"
 
-#: diff.c:5464
+#: diff.c:5469
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "使用 \"patience diff\" 算法生成差异"
 
-#: diff.c:5468
+#: diff.c:5473
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "使用 \"histogram diff\" 算法生成差异"
 
-#: diff.c:5470
+#: diff.c:5475
 msgid "<algorithm>"
 msgstr "<算法>"
 
-#: diff.c:5471
+#: diff.c:5476
 msgid "choose a diff algorithm"
 msgstr "选择一个差异算法"
 
-#: diff.c:5473
+#: diff.c:5478
 msgid "<text>"
 msgstr "<文本>"
 
-#: diff.c:5474
+#: diff.c:5479
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "使用 \"anchored diff\" 算法生成差异"
 
-#: diff.c:5476 diff.c:5485 diff.c:5488
+#: diff.c:5481 diff.c:5490 diff.c:5493
 msgid "<mode>"
 msgstr "<模式>"
 
-#: diff.c:5477
+#: diff.c:5482
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr "显示单词差异,使用 <模式> 分隔变更的单词"
 
-#: diff.c:5479 diff.c:5482 diff.c:5527
+#: diff.c:5484 diff.c:5487 diff.c:5532
 msgid "<regex>"
 msgstr "<正则>"
 
-#: diff.c:5480
+#: diff.c:5485
 msgid "use <regex> to decide what a word is"
 msgstr "使用 <正则表达式> 确定何为一个词"
 
-#: diff.c:5483
+#: diff.c:5488
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "相当于 --word-diff=color --word-diff-regex=<正则>"
 
-#: diff.c:5486
+#: diff.c:5491
 msgid "moved lines of code are colored differently"
 msgstr "移动的代码行用不同方式着色"
 
-#: diff.c:5489
+#: diff.c:5494
 msgid "how white spaces are ignored in --color-moved"
 msgstr "在 --color-moved 下如何忽略空白字符"
 
-#: diff.c:5492
+#: diff.c:5497
 msgid "Other diff options"
 msgstr "其它差异选项"
 
-#: diff.c:5494
+#: diff.c:5499
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr "当从子目录运行,排除目录之外的变更并显示相对路径"
 
-#: diff.c:5498
+#: diff.c:5503
 msgid "treat all files as text"
 msgstr "把所有文件当做文本处理"
 
-#: diff.c:5500
+#: diff.c:5505
 msgid "swap two inputs, reverse the diff"
 msgstr "交换两个输入,反转差异"
 
-#: diff.c:5502
+#: diff.c:5507
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "有差异时退出码为 1,否则为 0"
 
-#: diff.c:5504
+#: diff.c:5509
 msgid "disable all output of the program"
 msgstr "禁用本程序的所有输出"
 
-#: diff.c:5506
+#: diff.c:5511
 msgid "allow an external diff helper to be executed"
 msgstr "允许执行一个外置的差异助手"
 
-#: diff.c:5508
+#: diff.c:5513
 msgid "run external text conversion filters when comparing binary files"
 msgstr "当比较二进制文件时,运行外部的文本转换过滤器"
 
-#: diff.c:5510
+#: diff.c:5515
 msgid "<when>"
 msgstr "<何时>"
 
-#: diff.c:5511
+#: diff.c:5516
 msgid "ignore changes to submodules in the diff generation"
 msgstr "在生成差异时,忽略子模组的更改"
 
-#: diff.c:5514
+#: diff.c:5519
 msgid "<format>"
 msgstr "<格式>"
 
-#: diff.c:5515
+#: diff.c:5520
 msgid "specify how differences in submodules are shown"
 msgstr "指定子模组的差异如何显示"
 
-#: diff.c:5519
+#: diff.c:5524
 msgid "hide 'git add -N' entries from the index"
 msgstr "隐藏索引中 'git add -N' 条目"
 
-#: diff.c:5522
+#: diff.c:5527
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "将索引中 'git add -N' 条目当做真实的"
 
-#: diff.c:5524
+#: diff.c:5529
 msgid "<string>"
 msgstr "<字符串>"
 
-#: diff.c:5525
+#: diff.c:5530
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "查找改变了指定字符串出现次数的差异"
 
-#: diff.c:5528
+#: diff.c:5533
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr "查找改变指定正则匹配出现次数的差异"
 
-#: diff.c:5531
+#: diff.c:5536
 msgid "show all changes in the changeset with -S or -G"
 msgstr "显示使用 -S 或 -G 的变更集的所有变更"
 
-#: diff.c:5534
+#: diff.c:5539
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "将 -S 的 <string> 当做扩展的 POSIX 正则表达式"
 
-#: diff.c:5537
+#: diff.c:5542
 msgid "control the order in which files appear in the output"
 msgstr "控制输出中的文件显示顺序"
 
-#: diff.c:5538
+#: diff.c:5543
 msgid "<object-id>"
 msgstr "<对象 ID>"
 
-#: diff.c:5539
+#: diff.c:5544
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "查找改变指定对象出现次数的差异"
 
-#: diff.c:5541
+#: diff.c:5546
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5542
+#: diff.c:5547
 msgid "select files by diff type"
 msgstr "通过差异类型选择文件"
 
-#: diff.c:5544
+#: diff.c:5549
 msgid "<file>"
 msgstr "<文件>"
 
-#: diff.c:5545
+#: diff.c:5550
 msgid "Output to a specific file"
 msgstr "输出到一个指定的文件"
 
-#: diff.c:6200
+#: diff.c:6205
 msgid "inexact rename detection was skipped due to too many files."
 msgstr "因为文件太多,略过不严格的重命名检查。"
 
-#: diff.c:6203
+#: diff.c:6208
 msgid "only found copies from modified paths due to too many files."
 msgstr "因为文件太多,只在修改的路径中查找拷贝。"
 
-#: diff.c:6206
+#: diff.c:6211
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3756,59 +3797,59 @@
 msgid "Performing inexact rename detection"
 msgstr "正在进行非精确的重命名探测"
 
-#: dir.c:555
+#: dir.c:573
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr "路径规格 '%s' 未匹配任何 git 已知文件"
 
-#: dir.c:695 dir.c:724 dir.c:737
+#: dir.c:713 dir.c:742 dir.c:755
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "未识别的模式:'%s'"
 
-#: dir.c:754 dir.c:768
+#: dir.c:772 dir.c:786
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "未识别的反向模式:'%s'"
 
-#: dir.c:786
+#: dir.c:804
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr "您的 sparse-checkout 文件可能有问题:重复的模式 '%s'"
 
-#: dir.c:796
+#: dir.c:814
 msgid "disabling cone pattern matching"
 msgstr "禁止 cone 模式匹配"
 
-#: dir.c:1173
+#: dir.c:1191
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "不能将 %s 用作排除文件"
 
-#: dir.c:2275
+#: dir.c:2296
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "不能打开目录 '%s'"
 
-#: dir.c:2575
+#: dir.c:2596
 msgid "failed to get kernel name and information"
 msgstr "无法获得内核名称和信息"
 
-#: dir.c:2699
+#: dir.c:2720
 msgid "untracked cache is disabled on this system or location"
 msgstr "缓存未跟踪文件在本系统或位置中被禁用"
 
-#: dir.c:3481
+#: dir.c:3502
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "仓库 %s 中的索引文件损坏"
 
-#: dir.c:3526 dir.c:3531
+#: dir.c:3547 dir.c:3552
 #, c-format
 msgid "could not create directories for %s"
 msgstr "不能为 %s 创建目录"
 
-#: dir.c:3560
+#: dir.c:3581
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "不能从 '%s' 迁移 git 目录到 '%s'"
@@ -3818,11 +3859,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr "提示:等待您的编辑器关闭文件...%c"
 
-#: entry.c:178
+#: entry.c:177
 msgid "Filtering content"
 msgstr "过滤内容"
 
-#: entry.c:479
+#: entry.c:478
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "不能对文件 '%s' 调用 stat"
@@ -3842,227 +3883,245 @@
 msgid "too many args to run %s"
 msgstr "执行 %s 的参数太多"
 
-#: fetch-pack.c:151
+#: fetch-pack.c:152
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack:应为 shallow 列表"
 
-#: fetch-pack.c:154
+#: fetch-pack.c:155
 msgid "git fetch-pack: expected a flush packet after shallow list"
 msgstr "git fetch-pack:在浅克隆列表之后期望一个 flush 包"
 
-#: fetch-pack.c:165
+#: fetch-pack.c:166
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack:期望 ACK/NAK,却得到 flush 包"
 
-#: fetch-pack.c:185
+#: fetch-pack.c:186
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack:应为 ACK/NAK,却得到 '%s'"
 
-#: fetch-pack.c:196
+#: fetch-pack.c:197
 msgid "unable to write to remote"
 msgstr "无法写到远程"
 
-#: fetch-pack.c:258
+#: fetch-pack.c:259
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc 需要 multi_ack_detailed"
 
-#: fetch-pack.c:357 fetch-pack.c:1364
+#: fetch-pack.c:358 fetch-pack.c:1408
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "无效的 shallow 信息:%s"
 
-#: fetch-pack.c:363 fetch-pack.c:1370
+#: fetch-pack.c:364 fetch-pack.c:1414
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "无效的 unshallow 信息:%s"
 
-#: fetch-pack.c:365 fetch-pack.c:1372
+#: fetch-pack.c:366 fetch-pack.c:1416
 #, c-format
 msgid "object not found: %s"
 msgstr "对象未找到:%s"
 
-#: fetch-pack.c:368 fetch-pack.c:1375
+#: fetch-pack.c:369 fetch-pack.c:1419
 #, c-format
 msgid "error in object: %s"
 msgstr "对象中出错:%s"
 
-#: fetch-pack.c:370 fetch-pack.c:1377
+#: fetch-pack.c:371 fetch-pack.c:1421
 #, c-format
 msgid "no shallow found: %s"
 msgstr "未发现 shallow:%s"
 
-#: fetch-pack.c:373 fetch-pack.c:1381
+#: fetch-pack.c:374 fetch-pack.c:1425
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "应为 shallow/unshallow,却得到 %s"
 
-#: fetch-pack.c:415
+#: fetch-pack.c:416
 #, c-format
 msgid "got %s %d %s"
 msgstr "得到 %s %d %s"
 
-#: fetch-pack.c:432
+#: fetch-pack.c:433
 #, c-format
 msgid "invalid commit %s"
 msgstr "无效提交 %s"
 
-#: fetch-pack.c:463
+#: fetch-pack.c:464
 msgid "giving up"
 msgstr "放弃"
 
-#: fetch-pack.c:476 progress.c:336
+#: fetch-pack.c:477 progress.c:336
 msgid "done"
 msgstr "完成"
 
-#: fetch-pack.c:488
+#: fetch-pack.c:489
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "得到 %s (%d) %s"
 
-#: fetch-pack.c:534
+#: fetch-pack.c:535
 #, c-format
 msgid "Marking %s as complete"
 msgstr "标记 %s 为完成"
 
-#: fetch-pack.c:755
+#: fetch-pack.c:756
 #, c-format
 msgid "already have %s (%s)"
 msgstr "已经有 %s(%s)"
 
-#: fetch-pack.c:819
+#: fetch-pack.c:821
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack:无法派生 sideband 多路输出"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:829
 msgid "protocol error: bad pack header"
 msgstr "协议错误:坏的包头"
 
-#: fetch-pack.c:901
+#: fetch-pack.c:910
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack:无法派生进程 %s"
 
-#: fetch-pack.c:917
+#: fetch-pack.c:927
 #, c-format
 msgid "%s failed"
 msgstr "%s 失败"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:929
 msgid "error in sideband demultiplexer"
 msgstr "sideband 多路输出出错"
 
-#: fetch-pack.c:966
+#: fetch-pack.c:976
 #, c-format
 msgid "Server version is %.*s"
 msgstr "服务器版本 %.*s"
 
-#: fetch-pack.c:971 fetch-pack.c:977 fetch-pack.c:980 fetch-pack.c:986
-#: fetch-pack.c:990 fetch-pack.c:994 fetch-pack.c:998 fetch-pack.c:1002
-#: fetch-pack.c:1006 fetch-pack.c:1010 fetch-pack.c:1014 fetch-pack.c:1018
-#: fetch-pack.c:1024 fetch-pack.c:1030 fetch-pack.c:1035 fetch-pack.c:1040
+#: fetch-pack.c:981 fetch-pack.c:987 fetch-pack.c:990 fetch-pack.c:996
+#: fetch-pack.c:1000 fetch-pack.c:1004 fetch-pack.c:1008 fetch-pack.c:1012
+#: fetch-pack.c:1016 fetch-pack.c:1020 fetch-pack.c:1024 fetch-pack.c:1028
+#: fetch-pack.c:1034 fetch-pack.c:1040 fetch-pack.c:1045 fetch-pack.c:1050
 #, c-format
 msgid "Server supports %s"
 msgstr "服务器支持 %s"
 
-#: fetch-pack.c:973
+#: fetch-pack.c:983
 msgid "Server does not support shallow clients"
 msgstr "服务器不支持 shalllow 客户端"
 
-#: fetch-pack.c:1033
+#: fetch-pack.c:1043
 msgid "Server does not support --shallow-since"
 msgstr "服务器不支持 --shallow-since"
 
-#: fetch-pack.c:1038
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-exclude"
 msgstr "服务器不支持 --shallow-exclude"
 
-#: fetch-pack.c:1042
+#: fetch-pack.c:1052
 msgid "Server does not support --deepen"
 msgstr "服务器不支持 --deepen"
 
-#: fetch-pack.c:1059
+#: fetch-pack.c:1054
+msgid "Server does not support this repository's object format"
+msgstr "服务器不支持这个仓库的对象格式"
+
+#: fetch-pack.c:1071
 msgid "no common commits"
 msgstr "没有共同的提交"
 
-#: fetch-pack.c:1071 fetch-pack.c:1563
+#: fetch-pack.c:1083 fetch-pack.c:1639
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack:获取失败。"
 
 #: fetch-pack.c:1211
+#, c-format
+msgid "mismatched algorithms: client %s; server %s"
+msgstr "不匹配的算法:客户端 %s,服务端 %s"
+
+#: fetch-pack.c:1215
+#, c-format
+msgid "the server does not support algorithm '%s'"
+msgstr "服务器不支持算法 '%s'"
+
+#: fetch-pack.c:1235
 msgid "Server does not support shallow requests"
 msgstr "服务器不支持 shalllow 请求"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1242
 msgid "Server supports filter"
 msgstr "服务器支持 filter"
 
-#: fetch-pack.c:1242
+#: fetch-pack.c:1286
 msgid "unable to write request to remote"
 msgstr "无法将请求写到远程"
 
-#: fetch-pack.c:1260
+#: fetch-pack.c:1304
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "读取节标题 '%s' 出错"
 
-#: fetch-pack.c:1266
+#: fetch-pack.c:1310
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "预期 '%s',得到 '%s'"
 
-#: fetch-pack.c:1327
+#: fetch-pack.c:1371
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "意外的确认行:'%s'"
 
-#: fetch-pack.c:1332
+#: fetch-pack.c:1376
 #, c-format
 msgid "error processing acks: %d"
 msgstr "处理 ack 出错:%d"
 
-#: fetch-pack.c:1342
+#: fetch-pack.c:1386
 msgid "expected packfile to be sent after 'ready'"
 msgstr "预期在 'ready' 之后发送 packfile"
 
-#: fetch-pack.c:1344
+#: fetch-pack.c:1388
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "在没有 'ready' 不应该发送其它小节"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1430
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "处理浅克隆信息出错:%d"
 
-#: fetch-pack.c:1433
+#: fetch-pack.c:1477
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "预期 wanted-ref,得到 '%s'"
 
-#: fetch-pack.c:1438
+#: fetch-pack.c:1482
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "意外的 wanted-ref:'%s'"
 
-#: fetch-pack.c:1443
+#: fetch-pack.c:1487
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "处理要获取的引用出错:%d"
 
-#: fetch-pack.c:1789
+#: fetch-pack.c:1517
+msgid "git fetch-pack: expected response end packet"
+msgstr "git fetch-pack:预期响应结束包"
+
+#: fetch-pack.c:1921
 msgid "no matching remote head"
 msgstr "没有匹配的远程分支"
 
-#: fetch-pack.c:1812 builtin/clone.c:692
+#: fetch-pack.c:1944 builtin/clone.c:692
 msgid "remote did not send all necessary objects"
 msgstr "远程没有发送所有必需的对象"
 
-#: fetch-pack.c:1839
+#: fetch-pack.c:1971
 #, c-format
 msgid "no such remote ref %s"
 msgstr "没有这样的远程引用 %s"
 
-#: fetch-pack.c:1842
+#: fetch-pack.c:1974
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "服务器不允许请求未公开的对象 %s"
@@ -4098,7 +4157,7 @@
 msgid "'%s': unable to read %s"
 msgstr "'%s':无法读取 %s"
 
-#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:82
+#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:89
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
@@ -4242,16 +4301,16 @@
 "\n"
 "最相似的命令是"
 
-#: help.c:653
+#: help.c:654
 msgid "git version [<options>]"
 msgstr "git version [<选项>]"
 
-#: help.c:708
+#: help.c:709
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s:%s - %s"
 
-#: help.c:712
+#: help.c:713
 msgid ""
 "\n"
 "Did you mean this?"
@@ -4349,6 +4408,10 @@
 msgid "multiple filter-specs cannot be combined"
 msgstr "不能混用多种过滤规格"
 
+#: list-objects-filter-options.c:330
+msgid "unable to upgrade repository format to support partial clone"
+msgstr "无法升级仓库格式以支持部分克隆"
+
 #: list-objects-filter.c:492
 #, c-format
 msgid "unable to access sparse blob in '%s'"
@@ -4702,7 +4765,7 @@
 msgid "Skipped %s (merged same as existing)"
 msgstr "略过 %s(已经做过相同合并)"
 
-#: merge-recursive.c:3101 git-submodule.sh:985
+#: merge-recursive.c:3101 git-submodule.sh:959
 msgid "submodule"
 msgstr "子模组"
 
@@ -4826,7 +4889,7 @@
 msgstr "读取缓存失败"
 
 #: merge.c:108 rerere.c:720 builtin/am.c:1878 builtin/am.c:1912
-#: builtin/checkout.c:559 builtin/checkout.c:824 builtin/clone.c:816
+#: builtin/checkout.c:559 builtin/checkout.c:822 builtin/clone.c:816
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "无法写新的索引文件"
@@ -5071,21 +5134,21 @@
 msgid "hash mismatch %s"
 msgstr "哈希值与 %s 不匹配"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2135
+#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2184
 #, c-format
 msgid "unable to get size of %s"
 msgstr "无法得到 %s 的大小"
 
-#: packfile.c:629
+#: packfile.c:630
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "偏移量在包文件结束之前(损坏的 .idx?)"
 
-#: packfile.c:1899
+#: packfile.c:1900
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "偏移量在 %s 的包索引开始之前(损坏的索引?)"
 
-#: packfile.c:1903
+#: packfile.c:1904
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "偏移量越过了 %s 的包索引的结尾(被截断的索引?)"
@@ -5287,44 +5350,48 @@
 msgstr "无法写 delim 包"
 
 #: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "无法写入无状态分隔符数据包"
+
+#: pkt-line.c:113
 msgid "flush packet write failed"
 msgstr "flush 包写错误"
 
-#: pkt-line.c:146 pkt-line.c:232
+#: pkt-line.c:153 pkt-line.c:239
 msgid "protocol error: impossibly long line"
 msgstr "协议错误:不可能的长行"
 
-#: pkt-line.c:162 pkt-line.c:164
+#: pkt-line.c:169 pkt-line.c:171
 msgid "packet write with format failed"
 msgstr "格式化包写入错误"
 
-#: pkt-line.c:196
+#: pkt-line.c:203
 msgid "packet write failed - data exceeds max packet size"
 msgstr "写数据包失败:数据超过了包的最大长度"
 
-#: pkt-line.c:203 pkt-line.c:210
+#: pkt-line.c:210 pkt-line.c:217
 msgid "packet write failed"
 msgstr "数据包写入失败"
 
-#: pkt-line.c:295
+#: pkt-line.c:302
 msgid "read error"
 msgstr "读取错误"
 
-#: pkt-line.c:303
+#: pkt-line.c:310
 msgid "the remote end hung up unexpectedly"
 msgstr "远端意外挂断了"
 
-#: pkt-line.c:331
+#: pkt-line.c:338
 #, c-format
 msgid "protocol error: bad line length character: %.4s"
 msgstr "协议错误:错误的行长度字符串:%.4s"
 
-#: pkt-line.c:341 pkt-line.c:346
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
 msgid "protocol error: bad line length %d"
 msgstr "协议错误:错误的行长度 %d"
 
-#: pkt-line.c:362
+#: pkt-line.c:373
 #, c-format
 msgid "remote error: %s"
 msgstr "远程错误:%s"
@@ -5501,7 +5568,7 @@
 
 #: read-cache.c:1983 read-cache.c:2271 rerere.c:565 rerere.c:599 rerere.c:1111
 #: submodule.c:1619 builtin/add.c:532 builtin/check-ignore.c:181
-#: builtin/checkout.c:488 builtin/checkout.c:676 builtin/clean.c:961
+#: builtin/checkout.c:488 builtin/checkout.c:674 builtin/clean.c:991
 #: builtin/commit.c:364 builtin/diff-tree.c:121 builtin/grep.c:507
 #: builtin/mv.c:145 builtin/reset.c:247 builtin/rm.c:290
 #: builtin/submodule--helper.c:332
@@ -5558,7 +5625,7 @@
 msgid "broken index, expect %s in %s, got %s"
 msgstr "损坏的索引,期望在 %2$s 中的 %1$s,得到 %3$s"
 
-#: read-cache.c:3026 strbuf.c:1176 wrapper.c:622 builtin/merge.c:1130
+#: read-cache.c:3026 strbuf.c:1171 wrapper.c:630 builtin/merge.c:1130
 #, c-format
 msgid "could not close '%s'"
 msgstr "不能关闭 '%s'"
@@ -5734,7 +5801,7 @@
 msgid "could not read '%s'."
 msgstr "不能读取 '%s'。"
 
-#: ref-filter.c:42 wt-status.c:1936
+#: ref-filter.c:42 wt-status.c:1977
 msgid "gone"
 msgstr "丢失"
 
@@ -5958,7 +6025,7 @@
 msgid "ignoring ref with broken name %s"
 msgstr "忽略带有错误名称 %s 的引用"
 
-#: ref-filter.c:2095 refs.c:625
+#: ref-filter.c:2095 refs.c:657
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "忽略损坏的引用 %s"
@@ -5988,94 +6055,108 @@
 msgid "option `%s' must point to a commit"
 msgstr "选项 `%s' 必须指向一个提交"
 
-#: refs.c:262
+#: refs.c:264
 #, c-format
 msgid "%s does not point to a valid object!"
 msgstr "%s 没有指向一个有效的对象!"
 
-#: refs.c:623
+#: refs.c:572
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr "无法获取 `%s`"
+
+#: refs.c:579
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "无效的分支名:%s = %s"
+
+#: refs.c:655
 #, c-format
 msgid "ignoring dangling symref %s"
 msgstr "忽略悬空符号引用 %s"
 
-#: refs.c:760
+#: refs.c:792
 #, c-format
 msgid "could not open '%s' for writing: %s"
 msgstr "无法为写入打开 '%s':%s"
 
-#: refs.c:770 refs.c:821
+#: refs.c:802 refs.c:853
 #, c-format
 msgid "could not read ref '%s'"
 msgstr "无法读取引用 '%s'"
 
-#: refs.c:776
+#: refs.c:808
 #, c-format
 msgid "ref '%s' already exists"
 msgstr "引用 '%s' 已经存在"
 
-#: refs.c:781
+#: refs.c:813
 #, c-format
 msgid "unexpected object ID when writing '%s'"
 msgstr "写入 '%s' 时意外的对象 ID"
 
-#: refs.c:789 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
-#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1173
-#: wrapper.c:620
+#: refs.c:821 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
+#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1168
+#: wrapper.c:628
 #, c-format
 msgid "could not write to '%s'"
 msgstr "不能写入 '%s'"
 
-#: refs.c:816 strbuf.c:1171 wrapper.c:188 wrapper.c:358 builtin/am.c:719
+#: refs.c:848 strbuf.c:1166 wrapper.c:196 wrapper.c:366 builtin/am.c:719
 #: builtin/rebase.c:852
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "无法打开 '%s' 进行写入"
 
-#: refs.c:823
+#: refs.c:855
 #, c-format
 msgid "unexpected object ID when deleting '%s'"
 msgstr "删除 '%s' 时意外的对象 ID"
 
-#: refs.c:954
+#: refs.c:986
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr "引用 %s 的日志在 %s 之后有缺口"
 
-#: refs.c:960
+#: refs.c:992
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr "引用 %s 的日志意外终止于 %s "
 
-#: refs.c:1019
+#: refs.c:1051
 #, c-format
 msgid "log for %s is empty"
 msgstr "%s 的日志为空"
 
-#: refs.c:1111
+#: refs.c:1143
 #, c-format
 msgid "refusing to update ref with bad name '%s'"
 msgstr "拒绝更新有错误名称 '%s' 的引用"
 
-#: refs.c:1187
+#: refs.c:1219
 #, c-format
 msgid "update_ref failed for ref '%s': %s"
 msgstr "对引用 '%s' 执行 update_ref 失败:%s"
 
-#: refs.c:1979
+#: refs.c:2011
 #, c-format
 msgid "multiple updates for ref '%s' not allowed"
 msgstr "不允许对引用 '%s' 多次更新"
 
-#: refs.c:2011
+#: refs.c:2098
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "在隔离环境中禁止更新引用"
 
-#: refs.c:2107 refs.c:2137
+#: refs.c:2109
+msgid "ref updates aborted by hook"
+msgstr "引用更新被钩子中止"
+
+#: refs.c:2209 refs.c:2239
 #, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr "'%s' 已存在,无法创建 '%s'"
 
-#: refs.c:2113 refs.c:2148
+#: refs.c:2215 refs.c:2250
 #, c-format
 msgid "cannot process '%s' and '%s' at the same time"
 msgstr "无法同时处理 '%s' 和 '%s'"
@@ -6355,7 +6436,7 @@
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr "  (使用 \"git pull\" 来合并远程分支)\n"
 
-#: remote.c:2233
+#: remote.c:2241
 #, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr "无法解析期望的对象名 '%s'"
@@ -6482,20 +6563,20 @@
 msgid "failed to find tree of %s"
 msgstr "无法找到 %s 指向的树。"
 
-#: revision.c:2655
+#: revision.c:2661
 msgid "your current branch appears to be broken"
 msgstr "您的当前分支好像被损坏"
 
-#: revision.c:2658
+#: revision.c:2664
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "您的当前分支 '%s' 尚无任何提交"
 
-#: revision.c:2866
+#: revision.c:2873
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent 与 --bisect 不兼容"
 
-#: revision.c:2870
+#: revision.c:2877
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr "-L 尚不支持 -p 和 -s 之外的差异格式"
 
@@ -6535,21 +6616,25 @@
 msgid "failed to sign the push certificate"
 msgstr "为推送证书签名失败"
 
-#: send-pack.c:399
+#: send-pack.c:394
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr "接收端不支持这个仓库的哈希算法"
+
+#: send-pack.c:403
 msgid "the receiving end does not support --signed push"
 msgstr "接收端不支持签名推送"
 
-#: send-pack.c:401
+#: send-pack.c:405
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
 msgstr "未发送推送证书,因为接收端不支持签名推送"
 
-#: send-pack.c:413
+#: send-pack.c:417
 msgid "the receiving end does not support --atomic push"
 msgstr "接收端不支持原子推送"
 
-#: send-pack.c:418
+#: send-pack.c:422
 msgid "the receiving end does not support push options"
 msgstr "接收端不支持推送选项"
 
@@ -6669,7 +6754,7 @@
 msgid "unable to dequote value of '%s'"
 msgstr "无法为 '%s' 的值去引号"
 
-#: sequencer.c:785 wrapper.c:190 wrapper.c:360 builtin/am.c:710
+#: sequencer.c:785 wrapper.c:198 wrapper.c:368 builtin/am.c:710
 #: builtin/am.c:802 builtin/merge.c:1125 builtin/rebase.c:896
 #, c-format
 msgid "could not open '%s' for reading"
@@ -7498,84 +7583,84 @@
 msgid "this operation must be run in a work tree"
 msgstr "该操作必须在一个工作区中运行"
 
-#: setup.c:569
+#: setup.c:604
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "期望 git 仓库版本 <= %d,却得到 %d"
 
-#: setup.c:577
+#: setup.c:612
 msgid "unknown repository extensions found:"
 msgstr "发现未知的仓库扩展:"
 
-#: setup.c:596
+#: setup.c:631
 #, c-format
 msgid "error opening '%s'"
 msgstr "打开 '%s' 出错"
 
-#: setup.c:598
+#: setup.c:633
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "文件太大,无法作为 .git 文件:'%s'"
 
-#: setup.c:600
+#: setup.c:635
 #, c-format
 msgid "error reading %s"
 msgstr "读取 %s 出错"
 
-#: setup.c:602
+#: setup.c:637
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "无效的 gitfile 格式:%s"
 
-#: setup.c:604
+#: setup.c:639
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "在 gitfile 中没有路径:%s"
 
-#: setup.c:606
+#: setup.c:641
 #, c-format
 msgid "not a git repository: %s"
 msgstr "不是一个 git 仓库:%s"
 
-#: setup.c:708
+#: setup.c:743
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' 太大"
 
-#: setup.c:722
+#: setup.c:757
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "不是一个 git 仓库:'%s'"
 
-#: setup.c:751 setup.c:753 setup.c:784
+#: setup.c:786 setup.c:788 setup.c:819
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "不能切换目录到 '%s'"
 
-#: setup.c:756 setup.c:812 setup.c:822 setup.c:861 setup.c:869
+#: setup.c:791 setup.c:847 setup.c:857 setup.c:896 setup.c:904
 msgid "cannot come back to cwd"
 msgstr "无法返回当前工作目录"
 
-#: setup.c:883
+#: setup.c:918
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "获取 '%*s%s%s' 状态(stat)失败"
 
-#: setup.c:1121
+#: setup.c:1156
 msgid "Unable to read current working directory"
 msgstr "不能读取当前工作目录"
 
-#: setup.c:1130 setup.c:1136
+#: setup.c:1165 setup.c:1171
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "不能切换到 '%s'"
 
-#: setup.c:1141
+#: setup.c:1176
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "不是一个 git 仓库(或者任何父目录):%s"
 
-#: setup.c:1147
+#: setup.c:1182
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -7584,7 +7669,7 @@
 "不是一个 git 仓库(或者直至挂载点 %s 的任何父目录)\n"
 "停止在文件系统边界(未设置 GIT_DISCOVERY_ACROSS_FILESYSTEM)。"
 
-#: setup.c:1258
+#: setup.c:1293
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -7593,15 +7678,15 @@
 "参数 core.sharedRepository 的文件属性值有问题(0%.3o)。\n"
 "文件属主必须始终拥有读写权限。"
 
-#: setup.c:1304
+#: setup.c:1340
 msgid "open /dev/null or dup failed"
 msgstr "不能打开或者复制 /dev/null"
 
-#: setup.c:1319
+#: setup.c:1355
 msgid "fork failed"
 msgstr "fork 失败"
 
-#: setup.c:1324
+#: setup.c:1360
 msgid "setsid failed"
 msgstr "setsid 失败"
 
@@ -7781,7 +7866,7 @@
 msgid "confused by unstable object source data for %s"
 msgstr "被 %s 的不稳定对象源数据搞糊涂了"
 
-#: sha1-file.c:1906 builtin/pack-objects.c:1055
+#: sha1-file.c:1906 builtin/pack-objects.c:1085
 #, c-format
 msgid "failed utime() on %s"
 msgstr "在 %s 上调用 utime() 失败"
@@ -7956,43 +8041,43 @@
 msgstr "无效的对象名 '%.*s'。"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
-#: strbuf.c:853
+#: strbuf.c:848
 #, c-format
 msgid "%u.%2.2u GiB"
 msgstr "%u.%2.2u GiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
-#: strbuf.c:855
+#: strbuf.c:850
 #, c-format
 msgid "%u.%2.2u GiB/s"
 msgstr "%u.%2.2u GiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte
-#: strbuf.c:863
+#: strbuf.c:858
 #, c-format
 msgid "%u.%2.2u MiB"
 msgstr "%u.%2.2u MiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
-#: strbuf.c:865
+#: strbuf.c:860
 #, c-format
 msgid "%u.%2.2u MiB/s"
 msgstr "%u.%2.2u MiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte
-#: strbuf.c:872
+#: strbuf.c:867
 #, c-format
 msgid "%u.%2.2u KiB"
 msgstr "%u.%2.2u KiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
-#: strbuf.c:874
+#: strbuf.c:869
 #, c-format
 msgid "%u.%2.2u KiB/s"
 msgstr "%u.%2.2u KiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte
-#: strbuf.c:880
+#: strbuf.c:875
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -8000,14 +8085,14 @@
 msgstr[1] "%u 字节"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte/second
-#: strbuf.c:882
+#: strbuf.c:877
 #, c-format
 msgid "%u byte/s"
 msgid_plural "%u bytes/s"
 msgstr[0] "%u 字节/秒"
 msgstr[1] "%u 字节/秒"
 
-#: strbuf.c:1180
+#: strbuf.c:1175
 #, c-format
 msgid "could not edit '%s'"
 msgstr "不能编辑 '%s'"
@@ -8246,7 +8331,7 @@
 msgid "could not read from stdin"
 msgstr "不能自标准输入读取"
 
-#: trailer.c:1011 wrapper.c:665
+#: trailer.c:1011 wrapper.c:673
 #, c-format
 msgid "could not stat %s"
 msgstr "不能对 %s 调用 stat"
@@ -8270,177 +8355,182 @@
 msgid "could not rename temporary file to %s"
 msgstr "不能重命名临时文件为 %s"
 
-#: transport-helper.c:61 transport-helper.c:90
+#: transport-helper.c:62 transport-helper.c:91
 msgid "full write to remote helper failed"
 msgstr "完整写入远程助手失败"
 
-#: transport-helper.c:144
+#: transport-helper.c:145
 #, c-format
 msgid "unable to find remote helper for '%s'"
 msgstr "无法为 '%s' 找到远程助手"
 
-#: transport-helper.c:160 transport-helper.c:571
+#: transport-helper.c:161 transport-helper.c:575
 msgid "can't dup helper output fd"
 msgstr "无法复制助手输出文件句柄"
 
-#: transport-helper.c:211
+#: transport-helper.c:214
 #, c-format
 msgid ""
 "unknown mandatory capability %s; this remote helper probably needs newer "
 "version of Git"
 msgstr "未知的强制能力 %s,该远程助手可能需要新版本的Git"
 
-#: transport-helper.c:217
+#: transport-helper.c:220
 msgid "this remote helper should implement refspec capability"
 msgstr "远程助手需要实现 refspec 能力"
 
-#: transport-helper.c:284 transport-helper.c:425
+#: transport-helper.c:287 transport-helper.c:429
 #, c-format
 msgid "%s unexpectedly said: '%s'"
 msgstr "%s 意外地说:'%s'"
 
-#: transport-helper.c:414
+#: transport-helper.c:417
 #, c-format
 msgid "%s also locked %s"
 msgstr "%s 也锁定了 %s"
 
-#: transport-helper.c:493
+#: transport-helper.c:497
 msgid "couldn't run fast-import"
 msgstr "不能执行 fast-import"
 
-#: transport-helper.c:516
+#: transport-helper.c:520
 msgid "error while running fast-import"
 msgstr "执行 fast-import 出错"
 
-#: transport-helper.c:545 transport-helper.c:1135
+#: transport-helper.c:549 transport-helper.c:1156
 #, c-format
 msgid "could not read ref %s"
 msgstr "无法读取引用 %s"
 
-#: transport-helper.c:590
+#: transport-helper.c:594
 #, c-format
 msgid "unknown response to connect: %s"
 msgstr "连接时未知的响应:%s"
 
-#: transport-helper.c:612
+#: transport-helper.c:616
 msgid "setting remote service path not supported by protocol"
 msgstr "协议不支持设置远程服务路径"
 
-#: transport-helper.c:614
+#: transport-helper.c:618
 msgid "invalid remote service path"
 msgstr "无效的远程服务路径"
 
-#: transport-helper.c:657 transport.c:1339
+#: transport-helper.c:661 transport.c:1347
 msgid "operation not supported by protocol"
 msgstr "协议不支持该操作"
 
-#: transport-helper.c:660
+#: transport-helper.c:664
 #, c-format
 msgid "can't connect to subservice %s"
 msgstr "不能连接到子服务 %s"
 
-#: transport-helper.c:736
+#: transport-helper.c:740
 #, c-format
 msgid "expected ok/error, helper said '%s'"
 msgstr "预期 ok/error,助手说 '%s'"
 
-#: transport-helper.c:789
+#: transport-helper.c:793
 #, c-format
 msgid "helper reported unexpected status of %s"
 msgstr "助手报告 %s 的意外状态"
 
-#: transport-helper.c:850
+#: transport-helper.c:854
 #, c-format
 msgid "helper %s does not support dry-run"
 msgstr "助手 %s 不支持 dry-run"
 
-#: transport-helper.c:853
+#: transport-helper.c:857
 #, c-format
 msgid "helper %s does not support --signed"
 msgstr "助手 %s 不支持 --signed"
 
-#: transport-helper.c:856
+#: transport-helper.c:860
 #, c-format
 msgid "helper %s does not support --signed=if-asked"
 msgstr "助手 %s 不支持 --signed=if-asked"
 
-#: transport-helper.c:861
+#: transport-helper.c:865
 #, c-format
 msgid "helper %s does not support --atomic"
 msgstr "助手 %s 不支持 --atomic"
 
-#: transport-helper.c:867
+#: transport-helper.c:871
 #, c-format
 msgid "helper %s does not support 'push-option'"
 msgstr "助手 %s 不支持 'push-option'"
 
-#: transport-helper.c:966
+#: transport-helper.c:970
 msgid "remote-helper doesn't support push; refspec needed"
 msgstr "remote-heper 不支持 push,需要引用表达式"
 
-#: transport-helper.c:971
+#: transport-helper.c:975
 #, c-format
 msgid "helper %s does not support 'force'"
 msgstr "助手 %s 不支持 'force'"
 
-#: transport-helper.c:1018
+#: transport-helper.c:1022
 msgid "couldn't run fast-export"
 msgstr "无法执行 fast-export"
 
-#: transport-helper.c:1023
+#: transport-helper.c:1027
 msgid "error while running fast-export"
 msgstr "执行 fast-export 时出错"
 
-#: transport-helper.c:1048
+#: transport-helper.c:1052
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
-"Perhaps you should specify a branch such as 'master'.\n"
+"Perhaps you should specify a branch.\n"
 msgstr ""
 "没有共同的引用并且也没有指定,什么也不会做。\n"
-"可能您应该指定一个分支如 'master'。\n"
+"也许您应该指定一个分支。\n"
 
-#: transport-helper.c:1121
+#: transport-helper.c:1133
+#, c-format
+msgid "unsupported object format '%s'"
+msgstr "不支持的对象格式 '%s'"
+
+#: transport-helper.c:1142
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "引用列表中格式错误的响应:%s"
 
-#: transport-helper.c:1273
+#: transport-helper.c:1294
 #, c-format
 msgid "read(%s) failed"
 msgstr "读取(%s)失败"
 
-#: transport-helper.c:1300
+#: transport-helper.c:1321
 #, c-format
 msgid "write(%s) failed"
 msgstr "写(%s)失败"
 
-#: transport-helper.c:1349
+#: transport-helper.c:1370
 #, c-format
 msgid "%s thread failed"
 msgstr "%s 线程失败"
 
-#: transport-helper.c:1353
+#: transport-helper.c:1374
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "%s 线程等待失败:%s"
 
-#: transport-helper.c:1372 transport-helper.c:1376
+#: transport-helper.c:1393 transport-helper.c:1397
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "不能启动线程来拷贝数据:%s"
 
-#: transport-helper.c:1413
+#: transport-helper.c:1434
 #, c-format
 msgid "%s process failed to wait"
 msgstr "%s 进程等待失败"
 
-#: transport-helper.c:1417
+#: transport-helper.c:1438
 #, c-format
 msgid "%s process failed"
 msgstr "%s 进程失败"
 
-#: transport-helper.c:1435 transport-helper.c:1444
+#: transport-helper.c:1456 transport-helper.c:1465
 msgid "can't start thread for copying data"
 msgstr "不能启动线程来拷贝数据"
 
@@ -8454,33 +8544,33 @@
 msgid "could not read bundle '%s'"
 msgstr "无法读取 bundle '%s'"
 
-#: transport.c:214
+#: transport.c:220
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "传输:无效的深度选项 '%s'"
 
-#: transport.c:266
+#: transport.c:272
 msgid "see protocol.version in 'git help config' for more details"
 msgstr "查看 'git help config' 中的 protocol.version 获取更多信息"
 
-#: transport.c:267
+#: transport.c:273
 msgid "server options require protocol version 2 or later"
 msgstr "服务端选项需要版本 2 协议或更高"
 
-#: transport.c:632
+#: transport.c:631
 msgid "could not parse transport.color.* config"
 msgstr "不能解析 transport.color.* 配置"
 
-#: transport.c:705
+#: transport.c:704
 msgid "support for protocol v2 not implemented yet"
 msgstr "协议 v2 的支持尚未实现"
 
-#: transport.c:839
+#: transport.c:838
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "配置 '%s' 的取值未知:%s"
 
-#: transport.c:905
+#: transport.c:904
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "传输 '%s' 不允许"
@@ -8489,14 +8579,14 @@
 msgid "git-over-rsync is no longer supported"
 msgstr "不再支持 git-over-rsync"
 
-#: transport.c:1052
+#: transport.c:1059
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
 "not be found on any remote:\n"
 msgstr "下列子模组路径所包含的修改在任何远程源中都找不到:\n"
 
-#: transport.c:1056
+#: transport.c:1063
 #, c-format
 msgid ""
 "\n"
@@ -8523,11 +8613,11 @@
 "以推送至远程。\n"
 "\n"
 
-#: transport.c:1064
+#: transport.c:1071
 msgid "Aborting."
 msgstr "正在终止。"
 
-#: transport.c:1209
+#: transport.c:1216
 msgid "failed to push all needed submodules"
 msgstr "不能推送全部需要的子模组"
 
@@ -8792,7 +8882,7 @@
 msgid "Updating index flags"
 msgstr "正在更新索引标志"
 
-#: upload-pack.c:1337
+#: upload-pack.c:1415
 msgid "expected flush after fetch arguments"
 msgstr "在 fetch 参数之后应该有一个 flush 包"
 
@@ -8829,47 +8919,47 @@
 msgid "Fetching objects"
 msgstr "正在获取对象"
 
-#: worktree.c:262 builtin/am.c:2098
+#: worktree.c:248 builtin/am.c:2098
 #, c-format
 msgid "failed to read '%s'"
 msgstr "读取 '%s' 失败"
 
-#: worktree.c:309
+#: worktree.c:295
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "在主工作区的 '%s' 不是仓库目录"
 
-#: worktree.c:320
+#: worktree.c:306
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr "文件 '%s' 不包含工作区的绝对路径"
 
-#: worktree.c:332
+#: worktree.c:318
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' 不存在"
 
-#: worktree.c:338
+#: worktree.c:324
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' 不是一个 .git 文件,错误码 %d"
 
-#: worktree.c:347
+#: worktree.c:333
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' 没有指回到 '%s'"
 
-#: wrapper.c:186 wrapper.c:356
+#: wrapper.c:194 wrapper.c:364
 #, c-format
 msgid "could not open '%s' for reading and writing"
 msgstr "无法打开 '%s' 进行读写"
 
-#: wrapper.c:387 wrapper.c:588
+#: wrapper.c:395 wrapper.c:596
 #, c-format
 msgid "unable to access '%s'"
 msgstr "不能访问 '%s'"
 
-#: wrapper.c:596
+#: wrapper.c:604
 msgid "unable to get current working directory"
 msgstr "不能获取当前工作目录"
 
@@ -9280,39 +9370,44 @@
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (使用 \"git bisect reset\" 以回到原有分支)"
 
-#: wt-status.c:1692
+#: wt-status.c:1494
+#, c-format
+msgid "You are in a sparse checkout with %d%% of tracked files present."
+msgstr "您处于稀疏签出状态,包含 %d%% 的跟踪文件"
+
+#: wt-status.c:1733
 msgid "On branch "
 msgstr "位于分支 "
 
-#: wt-status.c:1699
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "交互式变基操作正在进行中;至 "
 
-#: wt-status.c:1701
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "变基操作正在进行中;至 "
 
-#: wt-status.c:1711
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "当前不在任何分支上。"
 
-#: wt-status.c:1728
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "初始提交"
 
-#: wt-status.c:1729
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "尚无提交"
 
-#: wt-status.c:1743
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "未跟踪的文件"
 
-#: wt-status.c:1745
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "忽略的文件"
 
-#: wt-status.c:1749
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9322,97 +9417,97 @@
 "耗费了 %.2f 秒以枚举未跟踪的文件。'status -uno' 也许能提高速度,\n"
 "但您需要小心不要忘了添加新文件(参见 'git help status')。"
 
-#: wt-status.c:1755
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "未跟踪的文件没有列出%s"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: wt-status.c:1757
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr "(使用 -u 参数显示未跟踪的文件)"
 
-#: wt-status.c:1763
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "没有修改"
 
-#: wt-status.c:1768
+#: wt-status.c:1809
 #, 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:1771
+#: wt-status.c:1812
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "修改尚未加入提交\n"
 
-#: wt-status.c:1774
+#: wt-status.c:1815
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr "提交为空,但是存在尚未跟踪的文件(使用 \"git add\" 建立跟踪)\n"
 
-#: wt-status.c:1777
+#: wt-status.c:1818
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "提交为空,但是存在尚未跟踪的文件\n"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: wt-status.c:1780
+#: wt-status.c:1821
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr "无文件要提交(创建/拷贝文件并使用 \"git add\" 建立跟踪)\n"
 
-#: wt-status.c:1783 wt-status.c:1788
+#: wt-status.c:1824 wt-status.c:1829
 #, c-format
 msgid "nothing to commit\n"
 msgstr "无文件要提交\n"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: wt-status.c:1786
+#: wt-status.c:1827
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr "无文件要提交(使用 -u 显示未跟踪的文件)\n"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: wt-status.c:1790
+#: wt-status.c:1831
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "无文件要提交,干净的工作区\n"
 
-#: wt-status.c:1903
+#: wt-status.c:1944
 msgid "No commits yet on "
 msgstr "尚无提交在 "
 
-#: wt-status.c:1907
+#: wt-status.c:1948
 msgid "HEAD (no branch)"
 msgstr "HEAD(非分支)"
 
-#: wt-status.c:1938
+#: wt-status.c:1979
 msgid "different"
 msgstr "不同"
 
 #  译者:注意保持句尾空格
-#: wt-status.c:1940 wt-status.c:1948
+#: wt-status.c:1981 wt-status.c:1989
 msgid "behind "
 msgstr "落后 "
 
-#: wt-status.c:1943 wt-status.c:1946
+#: wt-status.c:1984 wt-status.c:1987
 msgid "ahead "
 msgstr "领先 "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2468
+#: wt-status.c:2509
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "不能%s:您有未暂存的变更。"
 
-#: wt-status.c:2474
+#: wt-status.c:2515
 msgid "additionally, your index contains uncommitted changes."
 msgstr "另外,您的索引中包含未提交的变更。"
 
-#: wt-status.c:2476
+#: wt-status.c:2517
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "不能%s:您的索引中包含未提交的变更。"
@@ -9489,7 +9584,7 @@
 msgid "interactive picking"
 msgstr "交互式拣选"
 
-#: builtin/add.c:326 builtin/checkout.c:1535 builtin/reset.c:308
+#: builtin/add.c:326 builtin/checkout.c:1533 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "交互式挑选数据块"
 
@@ -9613,12 +9708,12 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "参数 --chmod 取值 '%s' 必须是 -x 或 +x"
 
-#: builtin/add.c:501 builtin/checkout.c:1703 builtin/commit.c:351
+#: builtin/add.c:501 builtin/checkout.c:1701 builtin/commit.c:351
 #: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1506
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file 与路径表达式参数不兼容"
 
-#: builtin/add.c:508 builtin/checkout.c:1715 builtin/commit.c:357
+#: builtin/add.c:508 builtin/checkout.c:1713 builtin/commit.c:357
 #: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1512
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul 需要 --pathspec-from-file"
@@ -9874,7 +9969,7 @@
 msgid "allow fall back on 3way merging if needed"
 msgstr "如果必要,允许使用三方合并。"
 
-#: builtin/am.c:2218 builtin/init-db.c:541 builtin/prune-packed.c:16
+#: builtin/am.c:2218 builtin/init-db.c:559 builtin/prune-packed.c:16
 #: builtin/repack.c:306 builtin/stash.c:816
 msgid "be quiet"
 msgstr "静默模式"
@@ -9929,7 +10024,7 @@
 
 #: builtin/am.c:2262 builtin/branch.c:659 builtin/for-each-ref.c:38
 #: builtin/replace.c:556 builtin/tag.c:438 builtin/verify-tag.c:38
-#: bugreport.c:131
+#: bugreport.c:137
 msgid "format"
 msgstr "格式"
 
@@ -10219,111 +10314,115 @@
 "命令 'git bisect terms' 的参数 %s 无效。\n"
 "支持的选项有:--term-good|--term-old 和 --term-bad|--term-new。"
 
-#: builtin/bisect--helper.c:478
+#: builtin/bisect--helper.c:460 builtin/bisect--helper.c:473
+msgid "'' is not a valid term"
+msgstr "'' 不是一个有效的术语"
+
+#: builtin/bisect--helper.c:483
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "未识别的选项:'%s'"
 
-#: builtin/bisect--helper.c:482
+#: builtin/bisect--helper.c:487
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' 看起来不是一个有效的版本"
 
-#: builtin/bisect--helper.c:514
+#: builtin/bisect--helper.c:519
 msgid "bad HEAD - I need a HEAD"
 msgstr "坏的 HEAD - 我需要一个 HEAD"
 
-#: builtin/bisect--helper.c:529
+#: builtin/bisect--helper.c:534
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr "检出 '%s' 失败。尝试 'git bisect start <有效分支>'。"
 
-#: builtin/bisect--helper.c:550
+#: builtin/bisect--helper.c:555
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "不会在做了 cg-seek 的树上做二分查找"
 
-#: builtin/bisect--helper.c:553
+#: builtin/bisect--helper.c:558
 msgid "bad HEAD - strange symbolic ref"
 msgstr "坏的 HEAD - 奇怪的符号引用"
 
-#: builtin/bisect--helper.c:577
+#: builtin/bisect--helper.c:582
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "无效的引用:'%s'"
 
-#: builtin/bisect--helper.c:633
+#: builtin/bisect--helper.c:638
 msgid "perform 'git bisect next'"
 msgstr "执行 'git bisect next'"
 
-#: builtin/bisect--helper.c:635
+#: builtin/bisect--helper.c:640
 msgid "write the terms to .git/BISECT_TERMS"
 msgstr "将术语写入 .git/BISECT_TERMS"
 
-#: builtin/bisect--helper.c:637
+#: builtin/bisect--helper.c:642
 msgid "cleanup the bisection state"
 msgstr "清除二分查找状态"
 
-#: builtin/bisect--helper.c:639
+#: builtin/bisect--helper.c:644
 msgid "check for expected revs"
 msgstr "检查预期的版本"
 
-#: builtin/bisect--helper.c:641
+#: builtin/bisect--helper.c:646
 msgid "reset the bisection state"
 msgstr "清除二分查找状态"
 
-#: builtin/bisect--helper.c:643
+#: builtin/bisect--helper.c:648
 msgid "write out the bisection state in BISECT_LOG"
 msgstr "将二分查找的状态写入 BISECT_LOG"
 
-#: builtin/bisect--helper.c:645
+#: builtin/bisect--helper.c:650
 msgid "check and set terms in a bisection state"
 msgstr "在一个二分查找状态中检查和设置术语"
 
-#: builtin/bisect--helper.c:647
+#: builtin/bisect--helper.c:652
 msgid "check whether bad or good terms exist"
 msgstr "检查坏的或好的术语是否存在"
 
-#: builtin/bisect--helper.c:649
+#: builtin/bisect--helper.c:654
 msgid "print out the bisect terms"
 msgstr "打印二分查找术语"
 
-#: builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:656
 msgid "start the bisect session"
 msgstr "启动二分查找过程"
 
-#: builtin/bisect--helper.c:653
+#: builtin/bisect--helper.c:658
 msgid "update BISECT_HEAD instead of checking out the current commit"
 msgstr "更新 BISECT_HEAD 而非检出当前提交"
 
-#: builtin/bisect--helper.c:655
+#: builtin/bisect--helper.c:660
 msgid "no log for BISECT_WRITE"
 msgstr "BISECT_WRITE 无日志"
 
-#: builtin/bisect--helper.c:673
+#: builtin/bisect--helper.c:678
 msgid "--write-terms requires two arguments"
 msgstr "--write-terms 需要两个参数"
 
-#: builtin/bisect--helper.c:677
+#: builtin/bisect--helper.c:682
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state 不带参数"
 
-#: builtin/bisect--helper.c:684
+#: builtin/bisect--helper.c:689
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset 无需参数或者需要一个提交"
 
-#: builtin/bisect--helper.c:688
+#: builtin/bisect--helper.c:693
 msgid "--bisect-write requires either 4 or 5 arguments"
 msgstr "--bisect-write 需要 4 或 5 个参数"
 
-#: builtin/bisect--helper.c:694
+#: builtin/bisect--helper.c:699
 msgid "--check-and-set-terms requires 3 arguments"
 msgstr "--check-and-set-terms 需要 3 个参数"
 
-#: builtin/bisect--helper.c:700
+#: builtin/bisect--helper.c:705
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check 需要 2 或 3 个参数"
 
-#: builtin/bisect--helper.c:706
+#: builtin/bisect--helper.c:711
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms 需要 0 或 1 个参数"
 
@@ -10921,19 +11020,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <文件> [<引用名>...]"
 
-#: builtin/bundle.c:66 builtin/pack-objects.c:3376
+#: builtin/bundle.c:66 builtin/pack-objects.c:3448
 msgid "do not show progress meter"
 msgstr "不显示进度表"
 
-#: builtin/bundle.c:68 builtin/pack-objects.c:3378
+#: builtin/bundle.c:68 builtin/pack-objects.c:3450
 msgid "show progress meter"
 msgstr "显示进度表"
 
-#: builtin/bundle.c:70 builtin/pack-objects.c:3380
+#: builtin/bundle.c:70 builtin/pack-objects.c:3452
 msgid "show progress meter during object writing phase"
 msgstr "在对象写入阶段显示进度表"
 
-#: builtin/bundle.c:73 builtin/pack-objects.c:3383
+#: builtin/bundle.c:73 builtin/pack-objects.c:3455
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "当进度表显示时类似于 --all-progress"
 
@@ -10973,11 +11072,9 @@
 
 #: builtin/cat-file.c:599
 msgid ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
-msgstr ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
+msgstr "git cat-file (--batch[=<格式>] | --batch-check[=<格式>]) [--follow-symlinks] [--textconv | --filters]"
 
 #: builtin/cat-file.c:620
 msgid "only one batch option may be specified"
@@ -11011,7 +11108,7 @@
 msgid "for blob objects, run filters on object's content"
 msgstr "对于数据对象,对其内容做过滤"
 
-#: builtin/cat-file.c:648 git-submodule.sh:984
+#: builtin/cat-file.c:648 git-submodule.sh:958
 msgid "blob"
 msgstr "数据对象"
 
@@ -11071,8 +11168,8 @@
 msgid "terminate input and output records by a NUL character"
 msgstr "输入和输出的记录使用 NUL 字符终结"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1488 builtin/gc.c:537
-#: builtin/worktree.c:502
+#: builtin/check-ignore.c:21 builtin/checkout.c:1486 builtin/gc.c:537
+#: builtin/worktree.c:561
 msgid "suppress progress reporting"
 msgstr "不显示进度报告"
 
@@ -11164,7 +11261,7 @@
 #: builtin/checkout-index.c:178 builtin/column.c:31
 #: builtin/submodule--helper.c:1400 builtin/submodule--helper.c:1403
 #: builtin/submodule--helper.c:1411 builtin/submodule--helper.c:1909
-#: builtin/worktree.c:675
+#: builtin/worktree.c:754
 msgid "string"
 msgstr "字符串"
 
@@ -11279,11 +11376,11 @@
 msgid "path '%s' is unmerged"
 msgstr "路径 '%s' 未合并"
 
-#: builtin/checkout.c:704
+#: builtin/checkout.c:702
 msgid "you need to resolve your current index first"
 msgstr "您需要先解决当前索引的冲突"
 
-#: builtin/checkout.c:758
+#: builtin/checkout.c:756
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11292,51 +11389,51 @@
 "不能继续,下列文件有暂存的修改:\n"
 "%s"
 
-#: builtin/checkout.c:861
+#: builtin/checkout.c:859
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "不能对 '%s' 执行 reflog 操作:%s\n"
 
-#: builtin/checkout.c:903
+#: builtin/checkout.c:901
 msgid "HEAD is now at"
 msgstr "HEAD 目前位于"
 
-#: builtin/checkout.c:907 builtin/clone.c:720
+#: builtin/checkout.c:905 builtin/clone.c:720
 msgid "unable to update HEAD"
 msgstr "不能更新 HEAD"
 
-#: builtin/checkout.c:911
+#: builtin/checkout.c:909
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "重置分支 '%s'\n"
 
-#: builtin/checkout.c:914
+#: builtin/checkout.c:912
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "已经位于 '%s'\n"
 
-#: builtin/checkout.c:918
+#: builtin/checkout.c:916
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "切换并重置分支 '%s'\n"
 
-#: builtin/checkout.c:920 builtin/checkout.c:1344
+#: builtin/checkout.c:918 builtin/checkout.c:1342
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "切换到一个新分支 '%s'\n"
 
-#: builtin/checkout.c:922
+#: builtin/checkout.c:920
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "切换到分支 '%s'\n"
 
 #  译者:注意保持前导空格
-#: builtin/checkout.c:973
+#: builtin/checkout.c:971
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... 及其它 %d 个。\n"
 
-#: builtin/checkout.c:979
+#: builtin/checkout.c:977
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11357,7 +11454,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:996
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11384,19 +11481,19 @@
 " git branch <新分支名> %s\n"
 "\n"
 
-#: builtin/checkout.c:1033
+#: builtin/checkout.c:1031
 msgid "internal error in revision walk"
 msgstr "在版本遍历时遇到内部错误"
 
-#: builtin/checkout.c:1037
+#: builtin/checkout.c:1035
 msgid "Previous HEAD position was"
 msgstr "之前的 HEAD 位置是"
 
-#: builtin/checkout.c:1077 builtin/checkout.c:1339
+#: builtin/checkout.c:1075 builtin/checkout.c:1337
 msgid "You are on a branch yet to be born"
 msgstr "您位于一个尚未初始化的分支"
 
-#: builtin/checkout.c:1152
+#: builtin/checkout.c:1150
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11405,7 +11502,7 @@
 "'%s' 既可以是一个本地文件,也可以是一个跟踪分支。\n"
 "请使用 --(和可选的 --no-guess)来消除歧义"
 
-#: builtin/checkout.c:1159
+#: builtin/checkout.c:1157
 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"
@@ -11424,51 +11521,51 @@
 "如果您总是喜欢使用模糊的简短分支名 <名称>,而不喜欢如 'origin' 的远程\n"
 "名称,可以在配置中设置 checkout.defaultRemote=origin。"
 
-#: builtin/checkout.c:1169
+#: builtin/checkout.c:1167
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' 匹配多个(%d 个)远程跟踪分支"
 
-#: builtin/checkout.c:1235
+#: builtin/checkout.c:1233
 msgid "only one reference expected"
 msgstr "只期望一个引用"
 
-#: builtin/checkout.c:1252
+#: builtin/checkout.c:1250
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "应只有一个引用,却给出了 %d 个"
 
-#: builtin/checkout.c:1298 builtin/worktree.c:283 builtin/worktree.c:451
+#: builtin/checkout.c:1296 builtin/worktree.c:342 builtin/worktree.c:510
 #, c-format
 msgid "invalid reference: %s"
 msgstr "无效引用:%s"
 
-#: builtin/checkout.c:1311 builtin/checkout.c:1677
+#: builtin/checkout.c:1309 builtin/checkout.c:1675
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "引用不是一个树:%s"
 
-#: builtin/checkout.c:1358
+#: builtin/checkout.c:1356
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "期望一个分支,得到标签 '%s'"
 
-#: builtin/checkout.c:1360
+#: builtin/checkout.c:1358
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "期望一个分支,得到远程分支 '%s'"
 
-#: builtin/checkout.c:1361 builtin/checkout.c:1369
+#: builtin/checkout.c:1359 builtin/checkout.c:1367
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "期望一个分支,得到 '%s'"
 
-#: builtin/checkout.c:1364
+#: builtin/checkout.c:1362
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "期望一个分支,得到提交 '%s'"
 
-#: builtin/checkout.c:1380
+#: builtin/checkout.c:1378
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11476,7 +11573,7 @@
 "不能在合并时切换分支\n"
 "考虑使用 \"git merge --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1384
+#: builtin/checkout.c:1382
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11484,7 +11581,7 @@
 "不能在一个 am 会话期间切换分支\n"
 "考虑使用 \"git am --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1388
+#: builtin/checkout.c:1386
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11492,7 +11589,7 @@
 "不能在变基时切换分支\n"
 "考虑使用 \"git rebase --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1390
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11500,7 +11597,7 @@
 "不能在拣选时切换分支\n"
 "考虑使用 \"git cherry-pick --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1394
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11508,213 +11605,214 @@
 "不能在还原时切换分支\n"
 "考虑使用 \"git revert --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1398
 msgid "you are switching branch while bisecting"
 msgstr "您在执行二分查找时切换分支"
 
-#: builtin/checkout.c:1407
+#: builtin/checkout.c:1405
 msgid "paths cannot be used with switching branches"
 msgstr "路径不能和切换分支同时使用"
 
-#: builtin/checkout.c:1410 builtin/checkout.c:1414 builtin/checkout.c:1418
+#: builtin/checkout.c:1408 builtin/checkout.c:1412 builtin/checkout.c:1416
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' 不能和切换分支同时使用"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1425 builtin/checkout.c:1428
-#: builtin/checkout.c:1433 builtin/checkout.c:1438
+#: builtin/checkout.c:1420 builtin/checkout.c:1423 builtin/checkout.c:1426
+#: builtin/checkout.c:1431 builtin/checkout.c:1436
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' 不能和 '%s' 同时使用"
 
-#: builtin/checkout.c:1435
+#: builtin/checkout.c:1433
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' 不带 <起始点>"
 
-#: builtin/checkout.c:1443
+#: builtin/checkout.c:1441
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "不能切换分支到一个非提交 '%s'"
 
-#: builtin/checkout.c:1450
+#: builtin/checkout.c:1448
 msgid "missing branch or commit argument"
 msgstr "缺少分支或提交参数"
 
-#: builtin/checkout.c:1492 builtin/clone.c:91 builtin/commit-graph.c:80
-#: builtin/commit-graph.c:164 builtin/fetch.c:168 builtin/merge.c:288
+#: builtin/checkout.c:1490 builtin/clone.c:91 builtin/commit-graph.c:82
+#: builtin/commit-graph.c:189 builtin/fetch.c:168 builtin/merge.c:288
 #: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:561
 #: builtin/send-pack.c:173
 msgid "force progress reporting"
 msgstr "强制显示进度报告"
 
-#: builtin/checkout.c:1493
+#: builtin/checkout.c:1491
 msgid "perform a 3-way merge with the new branch"
 msgstr "和新的分支执行三方合并"
 
-#: builtin/checkout.c:1494 builtin/log.c:1709 parse-options.h:322
+#: builtin/checkout.c:1492 builtin/log.c:1709 parse-options.h:322
 msgid "style"
 msgstr "风格"
 
-#: builtin/checkout.c:1495
+#: builtin/checkout.c:1493
 msgid "conflict style (merge or diff3)"
 msgstr "冲突输出风格(merge 或 diff3)"
 
-#: builtin/checkout.c:1507 builtin/worktree.c:499
+#: builtin/checkout.c:1505 builtin/worktree.c:558
 msgid "detach HEAD at named commit"
 msgstr "HEAD 从指定的提交分离"
 
-#: builtin/checkout.c:1508
+#: builtin/checkout.c:1506
 msgid "set upstream info for new branch"
 msgstr "为新的分支设置上游信息"
 
-#: builtin/checkout.c:1510
+#: builtin/checkout.c:1508
 msgid "force checkout (throw away local modifications)"
 msgstr "强制检出(丢弃本地修改)"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new-branch"
 msgstr "新分支"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new unparented branch"
 msgstr "新的没有父提交的分支"
 
-#: builtin/checkout.c:1514 builtin/merge.c:292
+#: builtin/checkout.c:1512 builtin/merge.c:292
 msgid "update ignored files (default)"
 msgstr "更新忽略的文件(默认)"
 
-#: builtin/checkout.c:1517
+#: builtin/checkout.c:1515
 msgid "do not check if another worktree is holding the given ref"
 msgstr "不检查指定的引用是否被其他工作区所占用"
 
-#: builtin/checkout.c:1530
+#: builtin/checkout.c:1528
 msgid "checkout our version for unmerged files"
 msgstr "对尚未合并的文件检出我们的版本"
 
-#: builtin/checkout.c:1533
+#: builtin/checkout.c:1531
 msgid "checkout their version for unmerged files"
 msgstr "对尚未合并的文件检出他们的版本"
 
-#: builtin/checkout.c:1537
+#: builtin/checkout.c:1535
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "对路径不做稀疏检出的限制"
 
-#: builtin/checkout.c:1592
+#: builtin/checkout.c:1590
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c、-%c 和 --orphan 是互斥的"
 
-#: builtin/checkout.c:1596
+#: builtin/checkout.c:1594
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p 和 --overlay 互斥"
 
-#: builtin/checkout.c:1633
+#: builtin/checkout.c:1631
 msgid "--track needs a branch name"
 msgstr "--track 需要一个分支名"
 
-#: builtin/checkout.c:1638
+#: builtin/checkout.c:1636
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "缺少分支名,尝试 -%c"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "could not resolve %s"
 msgstr "无法解析 %s"
 
-#: builtin/checkout.c:1686
+#: builtin/checkout.c:1684
 msgid "invalid path specification"
 msgstr "无效的路径规格"
 
-#: builtin/checkout.c:1693
+#: builtin/checkout.c:1691
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "'%s' 不是一个提交,不能基于它创建分支 '%s'"
 
-#: builtin/checkout.c:1697
+#: builtin/checkout.c:1695
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout:--detach 不能接收路径参数 '%s'"
 
-#: builtin/checkout.c:1706
+#: builtin/checkout.c:1704
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file 与 --detach 不兼容"
 
-#: builtin/checkout.c:1709 builtin/reset.c:325 builtin/stash.c:1503
+#: builtin/checkout.c:1707 builtin/reset.c:325 builtin/stash.c:1503
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file 与 --patch 不兼容"
 
-#: builtin/checkout.c:1720
+#: builtin/checkout.c:1718
 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:1725
+#: builtin/checkout.c:1723
 msgid "you must specify path(s) to restore"
 msgstr "您必须指定一个要恢复的路径"
 
-#: builtin/checkout.c:1751 builtin/checkout.c:1753 builtin/checkout.c:1802
-#: builtin/checkout.c:1804 builtin/clone.c:121 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/worktree.c:495 builtin/worktree.c:497
+#: builtin/checkout.c:1749 builtin/checkout.c:1751 builtin/checkout.c:1800
+#: builtin/checkout.c:1802 builtin/clone.c:121 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2295 builtin/worktree.c:554
+#: builtin/worktree.c:556
 msgid "branch"
 msgstr "分支"
 
-#: builtin/checkout.c:1752
+#: builtin/checkout.c:1750
 msgid "create and checkout a new branch"
 msgstr "创建并检出一个新的分支"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid "create/reset and checkout a branch"
 msgstr "创建/重置并检出一个分支"
 
-#: builtin/checkout.c:1755
+#: builtin/checkout.c:1753
 msgid "create reflog for new branch"
 msgstr "为新的分支创建引用日志"
 
-#: builtin/checkout.c:1757
+#: builtin/checkout.c:1755
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "二次猜测 'git checkout <无此分支>'(默认)"
 
-#: builtin/checkout.c:1758
+#: builtin/checkout.c:1756
 msgid "use overlay mode (default)"
 msgstr "使用叠加模式(默认)"
 
-#: builtin/checkout.c:1803
+#: builtin/checkout.c:1801
 msgid "create and switch to a new branch"
 msgstr "创建并切换一个新分支"
 
-#: builtin/checkout.c:1805
+#: builtin/checkout.c:1803
 msgid "create/reset and switch to a branch"
 msgstr "创建/重置并切换一个分支"
 
-#: builtin/checkout.c:1807
+#: builtin/checkout.c:1805
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "二次猜测 'git switch <无此分支>'"
 
-#: builtin/checkout.c:1809
+#: builtin/checkout.c:1807
 msgid "throw away local modifications"
 msgstr "丢弃本地修改"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "which tree-ish to checkout from"
 msgstr "要检出哪一个树"
 
-#: builtin/checkout.c:1845
+#: builtin/checkout.c:1843
 msgid "restore the index"
 msgstr "恢复索引"
 
-#: builtin/checkout.c:1847
+#: builtin/checkout.c:1845
 msgid "restore the working tree (default)"
 msgstr "恢复工作区(默认)"
 
-#: builtin/checkout.c:1849
+#: builtin/checkout.c:1847
 msgid "ignore unmerged entries"
 msgstr "忽略未合并条目"
 
-#: builtin/checkout.c:1850
+#: builtin/checkout.c:1848
 msgid "use overlay mode"
 msgstr "使用叠加模式"
 
@@ -11877,24 +11975,24 @@
 msgid "remove only ignored files"
 msgstr "只删除忽略的文件"
 
-#: builtin/clean.c:931
-msgid "-x and -X cannot be used together"
-msgstr "-x 和 -X 不能同时使用"
-
-#: builtin/clean.c:935
+#: builtin/clean.c:929
 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:938
+#: builtin/clean.c:932
 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
+msgid "-x and -X cannot be used together"
+msgstr "-x 和 -X 不能同时使用"
+
 #: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<选项>] [--] <仓库> [<路径>]"
@@ -11903,7 +12001,7 @@
 msgid "don't create a checkout"
 msgstr "不创建一个检出"
 
-#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:536
+#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:554
 msgid "create a bare repository"
 msgstr "创建一个纯仓库"
 
@@ -11935,11 +12033,11 @@
 msgid "number of submodules cloned in parallel"
 msgstr "并发克隆的子模组的数量"
 
-#: builtin/clone.c:111 builtin/init-db.c:533
+#: builtin/clone.c:111 builtin/init-db.c:551
 msgid "template-directory"
 msgstr "模板目录"
 
-#: builtin/clone.c:112 builtin/init-db.c:534
+#: builtin/clone.c:112 builtin/init-db.c:552
 msgid "directory from which templates will be used"
 msgstr "模板目录将被使用"
 
@@ -11953,8 +12051,8 @@
 msgid "use --reference only while cloning"
 msgstr "仅在克隆时参考 --reference 指向的本地仓库"
 
-#: builtin/clone.c:119 builtin/column.c:27 builtin/merge-file.c:46
-#: builtin/pack-objects.c:3442 builtin/repack.c:329
+#: builtin/clone.c:119 builtin/column.c:27 builtin/init-db.c:562
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3514 builtin/repack.c:329
 msgid "name"
 msgstr "名称"
 
@@ -11979,7 +12077,7 @@
 msgid "create a shallow clone of that depth"
 msgstr "创建一个指定深度的浅克隆"
 
-#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3431
+#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3503
 #: builtin/pull.c:211
 msgid "time"
 msgstr "时间"
@@ -12010,11 +12108,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "子模组将以浅下载模式克隆"
 
-#: builtin/clone.c:137 builtin/init-db.c:542
+#: builtin/clone.c:137 builtin/init-db.c:560
 msgid "gitdir"
 msgstr "git目录"
 
-#: builtin/clone.c:138 builtin/init-db.c:543
+#: builtin/clone.c:138 builtin/init-db.c:561
 msgid "separate git dir from working tree"
 msgstr "git目录和工作区分离"
 
@@ -12141,7 +12239,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "无法删除临时的 alternates 文件"
 
-#: builtin/clone.c:971 builtin/receive-pack.c:1972
+#: builtin/clone.c:971 builtin/receive-pack.c:1982
 msgid "Too many arguments."
 msgstr "太多参数。"
 
@@ -12158,83 +12256,83 @@
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare 和 --separate-git-dir 选项不兼容。"
 
-#: builtin/clone.c:1004
+#: builtin/clone.c:1007
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "仓库 '%s' 不存在"
 
-#: builtin/clone.c:1010 builtin/fetch.c:1789
+#: builtin/clone.c:1011 builtin/fetch.c:1794
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "深度 %s 不是一个正数"
 
-#: builtin/clone.c:1020
+#: builtin/clone.c:1021
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "目标路径 '%s' 已经存在,并且不是一个空目录。"
 
-#: builtin/clone.c:1030
+#: builtin/clone.c:1033
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "工作区 '%s' 已经存在。"
 
-#: builtin/clone.c:1045 builtin/clone.c:1066 builtin/difftool.c:271
-#: builtin/log.c:1886 builtin/worktree.c:295 builtin/worktree.c:327
+#: builtin/clone.c:1048 builtin/clone.c:1069 builtin/difftool.c:271
+#: builtin/log.c:1886 builtin/worktree.c:354 builtin/worktree.c:386
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "不能为 '%s' 创建先导目录"
 
-#: builtin/clone.c:1050
+#: builtin/clone.c:1053
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "不能创建工作区目录 '%s'"
 
-#: builtin/clone.c:1070
+#: builtin/clone.c:1073
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "克隆到纯仓库 '%s'...\n"
 
-#: builtin/clone.c:1072
+#: builtin/clone.c:1075
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "正克隆到 '%s'...\n"
 
-#: builtin/clone.c:1096
+#: builtin/clone.c:1099
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
 msgstr "clone --recursive 和 --reference 以及 --reference-if-able 不兼容"
 
-#: builtin/clone.c:1160
+#: builtin/clone.c:1164
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth 在本地克隆时被忽略,请改用 file:// 协议。"
 
-#: builtin/clone.c:1162
+#: builtin/clone.c:1166
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "--shallow-since 在本地克隆时被忽略,请改用 file:// 协议。"
 
-#: builtin/clone.c:1164
+#: builtin/clone.c:1168
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr "--shallow-exclude 在本地克隆时被忽略,请改用 file:// 协议。"
 
-#: builtin/clone.c:1166
+#: builtin/clone.c:1170
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--filter 在本地克隆时被忽略,请改用 file:// 协议。"
 
-#: builtin/clone.c:1169
+#: builtin/clone.c:1173
 msgid "source repository is shallow, ignoring --local"
 msgstr "源仓库是浅克隆,忽略 --local"
 
-#: builtin/clone.c:1174
+#: builtin/clone.c:1178
 msgid "--local is ignored"
 msgstr "--local 被忽略"
 
-#: builtin/clone.c:1249 builtin/clone.c:1257
+#: builtin/clone.c:1262 builtin/clone.c:1270
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "远程分支 %s 在上游 %s 未发现"
 
-#: builtin/clone.c:1260
+#: builtin/clone.c:1273
 msgid "You appear to have cloned an empty repository."
 msgstr "您似乎克隆了一个空仓库。"
 
@@ -12270,14 +12368,14 @@
 msgid "--command must be the first argument"
 msgstr "--command 必须是第一个参数"
 
-#: builtin/commit-graph.c:11 builtin/commit-graph.c:19
+#: builtin/commit-graph.c:13 builtin/commit-graph.c:21
 msgid ""
 "git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
 msgstr ""
 "git commit-graph verify [--object-dir <对象目录>] [--shallow] [--"
 "[no-]progress]"
 
-#: builtin/commit-graph.c:12 builtin/commit-graph.c:24
+#: builtin/commit-graph.c:14 builtin/commit-graph.c:26
 msgid ""
 "git commit-graph write [--object-dir <objdir>] [--append] [--"
 "split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
@@ -12287,80 +12385,89 @@
 ">]] [--reachable|--stdin-packs|--stdin-commits] [--changed-paths] [--"
 "[no-]progress] <切分选项>"
 
-#: builtin/commit-graph.c:60
+#: builtin/commit-graph.c:62
 #, c-format
 msgid "could not find object directory matching %s"
 msgstr "无法找到和 %s 匹配的对象目录"
 
-#: builtin/commit-graph.c:76 builtin/commit-graph.c:152
-#: builtin/commit-graph.c:257 builtin/fetch.c:180 builtin/log.c:1678
+#: builtin/commit-graph.c:78 builtin/commit-graph.c:177
+#: builtin/commit-graph.c:276 builtin/fetch.c:180 builtin/log.c:1678
 msgid "dir"
 msgstr "目录"
 
-#: builtin/commit-graph.c:77 builtin/commit-graph.c:153
-#: builtin/commit-graph.c:258
+#: builtin/commit-graph.c:79 builtin/commit-graph.c:178
+#: builtin/commit-graph.c:277
 msgid "The object directory to store the graph"
 msgstr "保存图形的对象目录"
 
-#: builtin/commit-graph.c:79
+#: builtin/commit-graph.c:81
 msgid "if the commit-graph is split, only verify the tip file"
 msgstr "如果提交图形被拆分,只验证头一个文件"
 
-#: builtin/commit-graph.c:102
+#: builtin/commit-graph.c:104
 #, c-format
 msgid "Could not open commit-graph '%s'"
 msgstr "无法打开提交图形 '%s'"
 
-#: builtin/commit-graph.c:136
+#: builtin/commit-graph.c:138
 #, c-format
 msgid "unrecognized --split argument, %s"
 msgstr "未能识别的 --split 参数,%s"
 
-#: builtin/commit-graph.c:155
-msgid "start walk at all refs"
-msgstr "开始遍历所有引用"
-
-#: builtin/commit-graph.c:157
-msgid "scan pack-indexes listed by stdin for commits"
-msgstr "从标准输入中的包索引文件列表中扫描提交"
-
-#: builtin/commit-graph.c:159
-msgid "start walk at commits listed by stdin"
-msgstr "从标准输入中的提交开始扫描"
-
-#: builtin/commit-graph.c:161
-msgid "include all commits already in the commit-graph file"
-msgstr "包含 commit-graph 文件中已有所有提交"
-
-#: builtin/commit-graph.c:163
-msgid "enable computation for changed paths"
-msgstr "启用变更路径的计算"
-
-#: builtin/commit-graph.c:166
-msgid "allow writing an incremental commit-graph file"
-msgstr "允许写一个增量提交图形文件"
-
-#: builtin/commit-graph.c:170
-msgid "maximum number of commits in a non-base split commit-graph"
-msgstr "在非基本拆分提交图形中的最大提交数"
-
-#: builtin/commit-graph.c:172
-msgid "maximum ratio between two levels of a split commit-graph"
-msgstr "一个拆分提交图形的两个级别之间的最大比率"
-
-#: builtin/commit-graph.c:174
-msgid "only expire files older than a given date-time"
-msgstr "只让早于给定时间的文件过期"
-
-#: builtin/commit-graph.c:190
-msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
-msgstr "不能同时使用 --reachable、--stdin-commits 或 --stdin-packs"
-
-#: builtin/commit-graph.c:229
+#: builtin/commit-graph.c:151
 #, c-format
 msgid "unexpected non-hex object ID: %s"
 msgstr "意外的非十六进制对象 ID:%s"
 
+#: builtin/commit-graph.c:156
+#, c-format
+msgid "invalid object: %s"
+msgstr "无效对象:%s"
+
+#: builtin/commit-graph.c:180
+msgid "start walk at all refs"
+msgstr "开始遍历所有引用"
+
+#: builtin/commit-graph.c:182
+msgid "scan pack-indexes listed by stdin for commits"
+msgstr "从标准输入中的包索引文件列表中扫描提交"
+
+#: builtin/commit-graph.c:184
+msgid "start walk at commits listed by stdin"
+msgstr "从标准输入中的提交开始扫描"
+
+#: builtin/commit-graph.c:186
+msgid "include all commits already in the commit-graph file"
+msgstr "包含 commit-graph 文件中已有所有提交"
+
+#: builtin/commit-graph.c:188
+msgid "enable computation for changed paths"
+msgstr "启用变更路径的计算"
+
+#: builtin/commit-graph.c:191
+msgid "allow writing an incremental commit-graph file"
+msgstr "允许写一个增量提交图形文件"
+
+#: builtin/commit-graph.c:195
+msgid "maximum number of commits in a non-base split commit-graph"
+msgstr "在非基本拆分提交图形中的最大提交数"
+
+#: builtin/commit-graph.c:197
+msgid "maximum ratio between two levels of a split commit-graph"
+msgstr "一个拆分提交图形的两个级别之间的最大比率"
+
+#: builtin/commit-graph.c:199
+msgid "only expire files older than a given date-time"
+msgstr "只让早于给定时间的文件过期"
+
+#: builtin/commit-graph.c:215
+msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
+msgstr "不能同时使用 --reachable、--stdin-commits 或 --stdin-packs"
+
+#: builtin/commit-graph.c:245
+msgid "Collecting commits from input"
+msgstr "正从标准输入收集提交"
+
 #: builtin/commit-tree.c:18
 msgid ""
 "git commit-tree [(-p <parent>)...] [-S[<keyid>]] [(-m <message>)...] [(-F "
@@ -12755,7 +12862,7 @@
 msgstr "版本"
 
 #: builtin/commit.c:1376 builtin/commit.c:1535 builtin/push.c:549
-#: builtin/worktree.c:646
+#: builtin/worktree.c:722
 msgid "machine-readable output"
 msgstr "机器可读的输出"
 
@@ -12768,8 +12875,8 @@
 msgstr "条目以 NUL 字符结尾"
 
 #: builtin/commit.c:1384 builtin/commit.c:1388 builtin/commit.c:1543
-#: builtin/fast-export.c:1153 builtin/fast-export.c:1156
-#: builtin/fast-export.c:1159 builtin/rebase.c:1392 parse-options.h:336
+#: builtin/fast-export.c:1199 builtin/fast-export.c:1202
+#: builtin/fast-export.c:1205 builtin/rebase.c:1392 parse-options.h:336
 msgid "mode"
 msgstr "模式"
 
@@ -13442,35 +13549,45 @@
 msgid "--broken is incompatible with commit-ishes"
 msgstr "--broken 与提交号不兼容"
 
-#: builtin/diff.c:84
+#: builtin/diff.c:91
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s':不是一个正规文件或符号链接"
 
-#: builtin/diff.c:235
+#: builtin/diff.c:242
 #, c-format
 msgid "invalid option: %s"
 msgstr "无效选项:%s"
 
-#: builtin/diff.c:350
+#: builtin/diff.c:359
+#, c-format
+msgid "%s...%s: no merge base"
+msgstr "%s...%s:无合并基线"
+
+#: builtin/diff.c:469
 msgid "Not a git repository"
 msgstr "不是一个 git 仓库"
 
-#: builtin/diff.c:394
+#: builtin/diff.c:514
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "提供了无效对象 '%s'。"
 
-#: builtin/diff.c:403
+#: builtin/diff.c:525
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "提供了超过两个数据对象:'%s'"
 
-#: builtin/diff.c:408
+#: builtin/diff.c:530
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "无法处理的对象 '%s'。"
 
+#: builtin/diff.c:564
+#, c-format
+msgid "%s...%s: multiple merge bases, using %s"
+msgstr "%s...%s:多条合并基线,使用 %s"
+
 #: builtin/difftool.c:30
 msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
 msgstr "git difftool [<选项>] [<提交> [<提交>]] [--] [<路径>...]"
@@ -13615,82 +13732,103 @@
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-opts]"
 
-#: builtin/fast-export.c:853
+#: builtin/fast-export.c:868
 msgid "Error: Cannot export nested tags unless --mark-tags is specified."
 msgstr "错误:除非指定 --mark-tags,否则无法导出嵌套标签。"
 
-#: builtin/fast-export.c:1152
+#: builtin/fast-export.c:1178
+msgid "--anonymize-map token cannot be empty"
+msgstr "--anonymize-map 取值不能为空"
+
+#: builtin/fast-export.c:1198
 msgid "show progress after <n> objects"
 msgstr "在 <n> 个对象之后显示进度"
 
-#: builtin/fast-export.c:1154
+#: builtin/fast-export.c:1200
 msgid "select handling of signed tags"
 msgstr "选择如何处理签名标签"
 
-#: builtin/fast-export.c:1157
+#: builtin/fast-export.c:1203
 msgid "select handling of tags that tag filtered objects"
 msgstr "选择当标签指向被过滤对象时该标签的处理方式"
 
-#: builtin/fast-export.c:1160
+#: builtin/fast-export.c:1206
 msgid "select handling of commit messages in an alternate encoding"
 msgstr "选择使用备用编码处理提交说明"
 
-#: builtin/fast-export.c:1163
+#: builtin/fast-export.c:1209
 msgid "Dump marks to this file"
 msgstr "把标记存储到这个文件"
 
-#: builtin/fast-export.c:1165
+#: builtin/fast-export.c:1211
 msgid "Import marks from this file"
 msgstr "从这个文件导入标记"
 
-#: builtin/fast-export.c:1169
+#: builtin/fast-export.c:1215
 msgid "Import marks from this file if it exists"
 msgstr "从该文件导入标记(如果存在的话)"
 
-#: builtin/fast-export.c:1171
+#: builtin/fast-export.c:1217
 msgid "Fake a tagger when tags lack one"
 msgstr "当标签缺少标记者字段时,假装提供一个"
 
-#: builtin/fast-export.c:1173
+#: builtin/fast-export.c:1219
 msgid "Output full tree for each commit"
 msgstr "每次提交都输出整个树"
 
-#: builtin/fast-export.c:1175
+#: builtin/fast-export.c:1221
 msgid "Use the done feature to terminate the stream"
 msgstr "使用 done 功能来终止流"
 
-#: builtin/fast-export.c:1176
+#: builtin/fast-export.c:1222
 msgid "Skip output of blob data"
 msgstr "跳过数据对象的输出"
 
-#: builtin/fast-export.c:1177 builtin/log.c:1724
+#: builtin/fast-export.c:1223 builtin/log.c:1724
 msgid "refspec"
 msgstr "引用规格"
 
-#: builtin/fast-export.c:1178
+#: builtin/fast-export.c:1224
 msgid "Apply refspec to exported refs"
 msgstr "对导出的引用应用引用规格"
 
-#: builtin/fast-export.c:1179
+#: builtin/fast-export.c:1225
 msgid "anonymize output"
 msgstr "匿名输出"
 
-#: builtin/fast-export.c:1181
+#: builtin/fast-export.c:1226
+msgid "from:to"
+msgstr "from:to"
+
+#: builtin/fast-export.c:1227
+msgid "convert <from> to <to> in anonymized output"
+msgstr "在匿名输出中将 <from> 转换为 <to>"
+
+#: builtin/fast-export.c:1230
 msgid "Reference parents which are not in fast-export stream by object id"
 msgstr "引用父对象 ID 不在 fast-export 流中"
 
-#: builtin/fast-export.c:1183
+#: builtin/fast-export.c:1232
 msgid "Show original object ids of blobs/commits"
 msgstr "显示数据对象/提交的原始对象 ID"
 
-#: builtin/fast-export.c:1185
+#: builtin/fast-export.c:1234
 msgid "Label tags with mark ids"
 msgstr "对带有标记 ID 的标签做标记"
 
-#: builtin/fast-export.c:1220
+#: builtin/fast-export.c:1257
+msgid "--anonymize-map without --anonymize does not make sense"
+msgstr "--anonymize-map 而没有 --anonymize 没有意义"
+
+#: builtin/fast-export.c:1272
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
 msgstr "不能同时传递参数 --import-marks 和 --import-marks-if-exists"
 
+#: builtin/fetch-pack.c:245
+#, c-format
+msgid "Lockfile created but not reported: %s"
+msgstr "Lockfile 已创建但未报告:%s"
+
 #: builtin/fetch.c:35
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<选项>] [<仓库> [<引用规格>...]]"
@@ -14011,40 +14149,40 @@
 msgid "You need to specify a tag name."
 msgstr "您需要指定一个标签名称。"
 
-#: builtin/fetch.c:1773
+#: builtin/fetch.c:1778
 msgid "Negative depth in --deepen is not supported"
 msgstr "--deepen 不支持负数深度"
 
-#: builtin/fetch.c:1775
+#: builtin/fetch.c:1780
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen 和 --depth 是互斥的"
 
-#: builtin/fetch.c:1780
+#: builtin/fetch.c:1785
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth 和 --unshallow 不能同时使用"
 
-#: builtin/fetch.c:1782
+#: builtin/fetch.c:1787
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "对于一个完整的仓库,参数 --unshallow 没有意义"
 
-#: builtin/fetch.c:1798
+#: builtin/fetch.c:1800
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all 不能带一个仓库参数"
 
-#: builtin/fetch.c:1800
+#: builtin/fetch.c:1802
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all 带引用规格没有任何意义"
 
-#: builtin/fetch.c:1809
+#: builtin/fetch.c:1811
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "没有这样的远程或远程组:%s"
 
-#: builtin/fetch.c:1816
+#: builtin/fetch.c:1818
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "获取组并指定引用规格没有意义"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1836
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14491,8 +14629,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1730
-#: builtin/pack-objects.c:2855
+#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1727
+#: builtin/pack-objects.c:2904
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "没有线程支持,忽略 %s"
@@ -14722,11 +14860,11 @@
 msgid "invalid option combination, ignoring --threads"
 msgstr "无效的选项组合,忽略 --threads"
 
-#: builtin/grep.c:1084 builtin/pack-objects.c:3548
+#: builtin/grep.c:1084 builtin/pack-objects.c:3623
 msgid "no threads support, ignoring --threads"
 msgstr "没有线程支持,忽略 --threads"
 
-#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2852
+#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2901
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "指定的线程数无效(%d)"
@@ -14927,7 +15065,7 @@
 msgid "used more bytes than were available"
 msgstr "用掉了超过可用的字节"
 
-#: builtin/index-pack.c:288 builtin/pack-objects.c:607
+#: builtin/index-pack.c:288 builtin/pack-objects.c:618
 msgid "pack too large for current definition of off_t"
 msgstr "包太大超过了当前 off_t 的定义"
 
@@ -14998,8 +15136,8 @@
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "发现 %s 出现 SHA1 冲突!"
 
-#: builtin/index-pack.c:738 builtin/pack-objects.c:159
-#: builtin/pack-objects.c:219 builtin/pack-objects.c:314
+#: builtin/index-pack.c:738 builtin/pack-objects.c:170
+#: builtin/pack-objects.c:230 builtin/pack-objects.c:325
 #, c-format
 msgid "unable to read %s"
 msgstr "不能读 %s"
@@ -15060,7 +15198,7 @@
 msgid "Resolving deltas"
 msgstr "处理 delta 中"
 
-#: builtin/index-pack.c:1208 builtin/pack-objects.c:2616
+#: builtin/index-pack.c:1208 builtin/pack-objects.c:2665
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "不能创建线程:%s"
@@ -15125,58 +15263,67 @@
 msgid "cannot store index file"
 msgstr "无法存储索引文件"
 
-#: builtin/index-pack.c:1528 builtin/pack-objects.c:2863
+#: builtin/index-pack.c:1528 builtin/pack-objects.c:2912
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "坏的 pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1596
+#: builtin/index-pack.c:1592
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "无法打开现存包文件 '%s'"
 
-#: builtin/index-pack.c:1598
+#: builtin/index-pack.c:1594
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "无法为 %s 打开包索引文件"
 
-#: builtin/index-pack.c:1646
+#: builtin/index-pack.c:1642
 #, 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:1653
+#: builtin/index-pack.c:1649
 #, 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:1692
+#: builtin/index-pack.c:1689
 msgid "Cannot come back to cwd"
 msgstr "无法返回当前工作目录"
 
-#: builtin/index-pack.c:1741 builtin/index-pack.c:1744
-#: builtin/index-pack.c:1760 builtin/index-pack.c:1764
+#: builtin/index-pack.c:1738 builtin/index-pack.c:1741
+#: builtin/index-pack.c:1757 builtin/index-pack.c:1761
 #, c-format
 msgid "bad %s"
 msgstr "错误选项 %s"
 
-#: builtin/index-pack.c:1780
+#: builtin/index-pack.c:1767 builtin/init-db.c:392 builtin/init-db.c:621
+#, c-format
+msgid "unknown hash algorithm '%s'"
+msgstr "未知的哈希算法 '%s'"
+
+#: builtin/index-pack.c:1782
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin 不能和 --stdin 同时使用"
 
-#: builtin/index-pack.c:1782
+#: builtin/index-pack.c:1784
 msgid "--stdin requires a git repository"
 msgstr "--stdin 需要一个 git 仓库"
 
-#: builtin/index-pack.c:1788
+#: builtin/index-pack.c:1786
+msgid "--object-format cannot be used with --stdin"
+msgstr "--object-format 不能和 --stdin 同时使用"
+
+#: builtin/index-pack.c:1792
 msgid "--verify with no packfile name given"
 msgstr "--verify 没有提供包文件名参数"
 
-#: builtin/index-pack.c:1836 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1840 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "在打包对象中 fsck 检查出错"
 
@@ -15220,51 +15367,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "没有从 '%s' 复制模版:%s"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:276
+#, c-format
+msgid "invalid initial branch name: '%s'"
+msgstr "无效的初始分支名:'%s'"
+
+#: builtin/init-db.c:368
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "不能处理 %d 类型的文件"
 
-#: builtin/init-db.c:359
+#: builtin/init-db.c:371
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "不能移动 %s 至 %s"
 
-#: builtin/init-db.c:374
+#: builtin/init-db.c:386
 msgid "attempt to reinitialize repository with different hash"
 msgstr "尝试用不同的哈希算法重新初始化仓库"
 
-#: builtin/init-db.c:380 builtin/init-db.c:601
-#, c-format
-msgid "unknown hash algorithm '%s'"
-msgstr "未知的哈希算法 '%s'"
-
-#: builtin/init-db.c:397 builtin/init-db.c:400
+#: builtin/init-db.c:410 builtin/init-db.c:413
 #, c-format
 msgid "%s already exists"
 msgstr "%s 已经存在"
 
-#: builtin/init-db.c:458
+#: builtin/init-db.c:444
+#, c-format
+msgid "re-init: ignored --initial-branch=%s"
+msgstr "re-init:已忽略 --initial-branch=%s"
+
+#: builtin/init-db.c:475
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "重新初始化已存在的共享 Git 仓库于 %s%s\n"
 
-#: builtin/init-db.c:459
+#: builtin/init-db.c:476
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "重新初始化已存在的 Git 仓库于 %s%s\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:480
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "已初始化空的共享 Git 仓库于 %s%s\n"
 
-#: builtin/init-db.c:464
+#: builtin/init-db.c:481
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "已初始化空的 Git 仓库于 %s%s\n"
 
-#: builtin/init-db.c:513
+#: builtin/init-db.c:530
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -15272,40 +15424,44 @@
 "git init [-q | --quiet] [--bare] [--template=<模板目录>] [--shared[=<权限>]] "
 "[<目录>]"
 
-#: builtin/init-db.c:538
+#: builtin/init-db.c:556
 msgid "permissions"
 msgstr "权限"
 
-#: builtin/init-db.c:539
+#: builtin/init-db.c:557
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "指定 git 仓库是多个用户之间共享的"
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:563
+msgid "override the name of the initial branch"
+msgstr "覆盖初始分支名称"
+
+#: builtin/init-db.c:564
 msgid "hash"
 msgstr "hash"
 
-#: builtin/init-db.c:545
+#: builtin/init-db.c:565 builtin/show-index.c:22
 msgid "specify the hash algorithm to use"
 msgstr "指定要使用的哈希算法"
 
-#: builtin/init-db.c:578 builtin/init-db.c:583
+#: builtin/init-db.c:598 builtin/init-db.c:603
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "不能创建目录 %s"
 
-#: builtin/init-db.c:587
+#: builtin/init-db.c:607
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "不能切换目录到 %s"
 
-#: builtin/init-db.c:614
+#: builtin/init-db.c:634
 #, 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:642
+#: builtin/init-db.c:662
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "不能访问工作区 '%s'"
@@ -17025,7 +17181,7 @@
 msgid "read object names from the standard input"
 msgstr "从标准输入读取对象名称"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:164
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
 msgid "do not remove, show only"
 msgstr "不删除,只显示"
 
@@ -17056,101 +17212,114 @@
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr "git pack-objects [<选项>...] <前缀名称> [< <引用列表> | < <对象列表>]"
 
-#: builtin/pack-objects.c:431
+#: builtin/pack-objects.c:442
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "%s 错的包对象 CRC"
 
-#: builtin/pack-objects.c:442
+#: builtin/pack-objects.c:453
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "%s 损坏的包对象"
 
-#: builtin/pack-objects.c:573
+#: builtin/pack-objects.c:584
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "发现对象 %s 递归 delta"
 
-#: builtin/pack-objects.c:784
+#: builtin/pack-objects.c:795
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "排序了 %u 个对象,预期 %<PRIu32> 个"
 
-#: builtin/pack-objects.c:973
+#: builtin/pack-objects.c:1003
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr "禁用 bitmap 写入,因为 pack.packSizeLimit 设置使得包被切分为多个"
 
-#: builtin/pack-objects.c:986
+#: builtin/pack-objects.c:1016
 msgid "Writing objects"
 msgstr "写入对象中"
 
-#: builtin/pack-objects.c:1047 builtin/update-index.c:90
+#: builtin/pack-objects.c:1077 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "对 %s 调用 stat 失败"
 
-#: builtin/pack-objects.c:1100
+#: builtin/pack-objects.c:1130
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "写入 %<PRIu32> 个对象而预期 %<PRIu32> 个"
 
-#: builtin/pack-objects.c:1298
+#: builtin/pack-objects.c:1347
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "禁用 bitmap 写入,因为一些对象将不会被打包"
 
-#: builtin/pack-objects.c:1725
+#: builtin/pack-objects.c:1774
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "%s 压缩中 delta 基准偏移越界"
 
-#: builtin/pack-objects.c:1734
+#: builtin/pack-objects.c:1783
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "%s 的 delta 基准偏移越界"
 
-#: builtin/pack-objects.c:2005
+#: builtin/pack-objects.c:2054
 msgid "Counting objects"
 msgstr "对象计数中"
 
-#: builtin/pack-objects.c:2150
+#: builtin/pack-objects.c:2199
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "无法解析对象 %s 头信息"
 
-#: builtin/pack-objects.c:2220 builtin/pack-objects.c:2236
-#: builtin/pack-objects.c:2246
+#: builtin/pack-objects.c:2269 builtin/pack-objects.c:2285
+#: builtin/pack-objects.c:2295
 #, c-format
 msgid "object %s cannot be read"
 msgstr "对象 %s 无法读取"
 
-#: builtin/pack-objects.c:2223 builtin/pack-objects.c:2250
+#: builtin/pack-objects.c:2272 builtin/pack-objects.c:2299
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "对象 %s 不一致的对象长度(%<PRIuMAX> vs %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2260
+#: builtin/pack-objects.c:2309
 msgid "suboptimal pack - out of memory"
 msgstr "次优(suboptimal)打包 - 内存不足"
 
-#: builtin/pack-objects.c:2575
+#: builtin/pack-objects.c:2624
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "使用 %d 个线程进行压缩"
 
-#: builtin/pack-objects.c:2714
+#: builtin/pack-objects.c:2763
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "无法为标签 %s 压缩对象"
 
-#: builtin/pack-objects.c:2802
+#: builtin/pack-objects.c:2851
 msgid "Compressing objects"
 msgstr "压缩对象中"
 
-#: builtin/pack-objects.c:2808
+#: builtin/pack-objects.c:2857
 msgid "inconsistency with delta count"
 msgstr "不一致的差异计数"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2929
+#, c-format
+msgid ""
+"value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
+"hash> <uri>' (got '%s')"
+msgstr "uploadpack.blobpackfileuri 的取值必须是 '<object-hash> <pack-hash> <uri>' 格式(得到 '%s')"
+
+#: builtin/pack-objects.c:2932
+#, c-format
+msgid ""
+"object already configured in another uploadpack.blobpackfileuri (got '%s')"
+msgstr "对象已经在另外的 uploadpack.blobpackfileuri 中配置(得到 '%s')"
+
+#: builtin/pack-objects.c:2961
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -17159,7 +17328,7 @@
 "预期边界对象(edge object)ID,却得到垃圾数据:\n"
 " %s"
 
-#: builtin/pack-objects.c:2895
+#: builtin/pack-objects.c:2967
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -17168,226 +17337,234 @@
 "预期对象 ID,却得到垃圾数据:\n"
 " %s"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3065
 msgid "invalid value for --missing"
 msgstr "选项 --missing 的值无效"
 
-#: builtin/pack-objects.c:3052 builtin/pack-objects.c:3160
+#: builtin/pack-objects.c:3124 builtin/pack-objects.c:3232
 msgid "cannot open pack index"
 msgstr "无法打开包文件索引"
 
-#: builtin/pack-objects.c:3083
+#: builtin/pack-objects.c:3155
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "无法检查 %s 处的松散对象"
 
-#: builtin/pack-objects.c:3168
+#: builtin/pack-objects.c:3240
 msgid "unable to force loose object"
 msgstr "无法强制松散对象"
 
-#: builtin/pack-objects.c:3261
+#: builtin/pack-objects.c:3333
 #, c-format
 msgid "not a rev '%s'"
 msgstr "不是一个版本 '%s'"
 
-#: builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3336
 #, c-format
 msgid "bad revision '%s'"
 msgstr "坏的版本 '%s'"
 
-#: builtin/pack-objects.c:3289
+#: builtin/pack-objects.c:3361
 msgid "unable to add recent objects"
 msgstr "无法添加最近的对象"
 
-#: builtin/pack-objects.c:3342
+#: builtin/pack-objects.c:3414
 #, c-format
 msgid "unsupported index version %s"
 msgstr "不支持的索引版本 %s"
 
-#: builtin/pack-objects.c:3346
+#: builtin/pack-objects.c:3418
 #, c-format
 msgid "bad index version '%s'"
 msgstr "坏的索引版本 '%s'"
 
-#: builtin/pack-objects.c:3384
+#: builtin/pack-objects.c:3456
 msgid "<version>[,<offset>]"
 msgstr "<版本>[,<偏移>]"
 
-#: builtin/pack-objects.c:3385
+#: builtin/pack-objects.c:3457
 msgid "write the pack index file in the specified idx format version"
 msgstr "用指定的 idx 格式版本来写包索引文件"
 
-#: builtin/pack-objects.c:3388
+#: builtin/pack-objects.c:3460
 msgid "maximum size of each output pack file"
 msgstr "每个输出包的最大尺寸"
 
-#: builtin/pack-objects.c:3390
+#: builtin/pack-objects.c:3462
 msgid "ignore borrowed objects from alternate object store"
 msgstr "忽略从备用对象存储里借用对象"
 
-#: builtin/pack-objects.c:3392
+#: builtin/pack-objects.c:3464
 msgid "ignore packed objects"
 msgstr "忽略包对象"
 
-#: builtin/pack-objects.c:3394
+#: builtin/pack-objects.c:3466
 msgid "limit pack window by objects"
 msgstr "限制打包窗口的对象数"
 
-#: builtin/pack-objects.c:3396
+#: builtin/pack-objects.c:3468
 msgid "limit pack window by memory in addition to object limit"
 msgstr "除对象数量限制外设置打包窗口的内存限制"
 
-#: builtin/pack-objects.c:3398
+#: builtin/pack-objects.c:3470
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "打包允许的 delta 链的最大长度"
 
-#: builtin/pack-objects.c:3400
+#: builtin/pack-objects.c:3472
 msgid "reuse existing deltas"
 msgstr "重用已存在的 deltas"
 
-#: builtin/pack-objects.c:3402
+#: builtin/pack-objects.c:3474
 msgid "reuse existing objects"
 msgstr "重用已存在的对象"
 
-#: builtin/pack-objects.c:3404
+#: builtin/pack-objects.c:3476
 msgid "use OFS_DELTA objects"
 msgstr "使用 OFS_DELTA 对象"
 
-#: builtin/pack-objects.c:3406
+#: builtin/pack-objects.c:3478
 msgid "use threads when searching for best delta matches"
 msgstr "使用线程查询最佳 delta 匹配"
 
-#: builtin/pack-objects.c:3408
+#: builtin/pack-objects.c:3480
 msgid "do not create an empty pack output"
 msgstr "不创建空的包输出"
 
-#: builtin/pack-objects.c:3410
+#: builtin/pack-objects.c:3482
 msgid "read revision arguments from standard input"
 msgstr "从标准输入读取版本号参数"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3484
 msgid "limit the objects to those that are not yet packed"
 msgstr "限制那些尚未打包的对象"
 
-#: builtin/pack-objects.c:3415
+#: builtin/pack-objects.c:3487
 msgid "include objects reachable from any reference"
 msgstr "包括可以从任何引用访问到的对象"
 
-#: builtin/pack-objects.c:3418
+#: builtin/pack-objects.c:3490
 msgid "include objects referred by reflog entries"
 msgstr "包括被引用日志引用到的对象"
 
-#: builtin/pack-objects.c:3421
+#: builtin/pack-objects.c:3493
 msgid "include objects referred to by the index"
 msgstr "包括被索引引用到的对象"
 
-#: builtin/pack-objects.c:3424
+#: builtin/pack-objects.c:3496
 msgid "output pack to stdout"
 msgstr "输出包到标准输出"
 
-#: builtin/pack-objects.c:3426
+#: builtin/pack-objects.c:3498
 msgid "include tag objects that refer to objects to be packed"
 msgstr "包括那些引用了待打包对象的标签对象"
 
-#: builtin/pack-objects.c:3428
+#: builtin/pack-objects.c:3500
 msgid "keep unreachable objects"
 msgstr "维持不可达的对象"
 
-#: builtin/pack-objects.c:3430
+#: builtin/pack-objects.c:3502
 msgid "pack loose unreachable objects"
 msgstr "打包松散的不可达对象"
 
-#: builtin/pack-objects.c:3432
+#: builtin/pack-objects.c:3504
 msgid "unpack unreachable objects newer than <time>"
 msgstr "将比给定 <时间> 新的无法访问的对象解包"
 
-#: builtin/pack-objects.c:3435
+#: builtin/pack-objects.c:3507
 msgid "use the sparse reachability algorithm"
 msgstr "使用稀疏可达性算法"
 
-#: builtin/pack-objects.c:3437
+#: builtin/pack-objects.c:3509
 msgid "create thin packs"
 msgstr "创建精简包"
 
-#: builtin/pack-objects.c:3439
+#: builtin/pack-objects.c:3511
 msgid "create packs suitable for shallow fetches"
 msgstr "创建适合浅克隆仓库获取的包"
 
-#: builtin/pack-objects.c:3441
+#: builtin/pack-objects.c:3513
 msgid "ignore packs that have companion .keep file"
 msgstr "忽略配有 .keep 文件的包"
 
-#: builtin/pack-objects.c:3443
+#: builtin/pack-objects.c:3515
 msgid "ignore this pack"
 msgstr "忽略该 pack"
 
-#: builtin/pack-objects.c:3445
+#: builtin/pack-objects.c:3517
 msgid "pack compression level"
 msgstr "打包压缩级别"
 
-#: builtin/pack-objects.c:3447
+#: builtin/pack-objects.c:3519
 msgid "do not hide commits by grafts"
 msgstr "显示被移植隐藏的提交"
 
-#: builtin/pack-objects.c:3449
+#: builtin/pack-objects.c:3521
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr "使用 bitmap 索引(如果有的话)以提高对象计数时的速度"
 
-#: builtin/pack-objects.c:3451
+#: builtin/pack-objects.c:3523
 msgid "write a bitmap index together with the pack index"
 msgstr "在建立包索引的同时创建 bitmap 索引"
 
-#: builtin/pack-objects.c:3455
+#: builtin/pack-objects.c:3527
 msgid "write a bitmap index if possible"
 msgstr "如果可能,写 bitmap 索引"
 
-#: builtin/pack-objects.c:3459
+#: builtin/pack-objects.c:3531
 msgid "handling for missing objects"
 msgstr "处理丢失的对象"
 
-#: builtin/pack-objects.c:3462
+#: builtin/pack-objects.c:3534
 msgid "do not pack objects in promisor packfiles"
 msgstr "不要打包 promisor 包文件中的对象"
 
-#: builtin/pack-objects.c:3464
+#: builtin/pack-objects.c:3536
 msgid "respect islands during delta compression"
 msgstr "在增量压缩时参考数据岛"
 
-#: builtin/pack-objects.c:3493
+#: builtin/pack-objects.c:3538
+msgid "protocol"
+msgstr "协议"
+
+#: builtin/pack-objects.c:3539
+msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
+msgstr "使用此协议排除任何已配置的 uploadpack.blobpackfileuri"
+
+#: builtin/pack-objects.c:3568
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "增量链深度 %d 太深了,强制为 %d"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3573
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "配置 pack.deltaCacheLimit 太高了,强制为 %d"
 
-#: builtin/pack-objects.c:3552
+#: builtin/pack-objects.c:3627
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr "不能使用 --max-pack-size 来构建传输用的包文件"
 
-#: builtin/pack-objects.c:3554
+#: builtin/pack-objects.c:3629
 msgid "minimum pack size limit is 1 MiB"
 msgstr "最小的包文件大小是 1 MiB"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3634
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin 不能用于创建一个可索引包"
 
-#: builtin/pack-objects.c:3562
+#: builtin/pack-objects.c:3637
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable 和 --unpack-unreachable 不兼容"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3643
 msgid "cannot use --filter without --stdout"
 msgstr "不能在没有 --stdout 的情况下使用 --filter"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3703
 msgid "Enumerating objects"
 msgstr "枚举对象"
 
-#: builtin/pack-objects.c:3658
+#: builtin/pack-objects.c:3734
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18647,7 +18824,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <仓库目录>"
 
-#: builtin/receive-pack.c:843
+#: builtin/receive-pack.c:844
 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"
@@ -18673,7 +18850,7 @@
 "若要屏蔽此信息且保持默认行为,设置 'receive.denyCurrentBranch'\n"
 "配置变量为 'refuse'。"
 
-#: builtin/receive-pack.c:863
+#: builtin/receive-pack.c:864
 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"
@@ -18692,11 +18869,11 @@
 "\n"
 "若要屏蔽此信息,您可以设置它为 'refuse'。"
 
-#: builtin/receive-pack.c:1960
+#: builtin/receive-pack.c:1970
 msgid "quiet"
 msgstr "静默模式"
 
-#: builtin/receive-pack.c:1974
+#: builtin/receive-pack.c:1984
 msgid "You must specify a directory."
 msgstr "您必须指定一个目录。"
 
@@ -20227,6 +20404,14 @@
 msgid "cannot find commit %s (%s)"
 msgstr "不能找到提交 %s(%s)"
 
+#: builtin/show-index.c:21
+msgid "hash-algorithm"
+msgstr "哈希算法"
+
+#: builtin/show-index.c:31
+msgid "Unknown hash algorithm"
+msgstr "未知的哈希算法"
+
 #: builtin/show-ref.c:12
 msgid ""
 "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
@@ -20279,50 +20464,54 @@
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr "本工作区不是稀疏模式(稀疏检出文件可能不存在)"
 
-#: builtin/sparse-checkout.c:212
+#: builtin/sparse-checkout.c:216
 msgid "failed to create directory for sparse-checkout file"
 msgstr "无法为稀疏检出文件创建目录"
 
-#: builtin/sparse-checkout.c:253
+#: builtin/sparse-checkout.c:257
+msgid "unable to upgrade repository format to enable worktreeConfig"
+msgstr "无法升级仓库格式以启用 worktreeConfig"
+
+#: builtin/sparse-checkout.c:259
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "无法设置 extensions.worktreeConfig"
 
-#: builtin/sparse-checkout.c:270
+#: builtin/sparse-checkout.c:276
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:289
+#: builtin/sparse-checkout.c:295
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "初始化稀疏检出为 cone 模式"
 
-#: builtin/sparse-checkout.c:326
+#: builtin/sparse-checkout.c:332
 #, c-format
 msgid "failed to open '%s'"
 msgstr "无法打开 '%s'"
 
-#: builtin/sparse-checkout.c:383
+#: builtin/sparse-checkout.c:389
 #, c-format
 msgid "could not normalize path %s"
 msgstr "无法规范化路径 %s"
 
-#: builtin/sparse-checkout.c:395
+#: builtin/sparse-checkout.c:401
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <模式>)"
 
-#: builtin/sparse-checkout.c:420
+#: builtin/sparse-checkout.c:426
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "无法为 C 语言风格的字符串 '%s' 去引号"
 
-#: builtin/sparse-checkout.c:474 builtin/sparse-checkout.c:498
+#: builtin/sparse-checkout.c:480 builtin/sparse-checkout.c:504
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "无法加载现存的稀疏检出模式"
 
-#: builtin/sparse-checkout.c:543
+#: builtin/sparse-checkout.c:549
 msgid "read patterns from standard in"
 msgstr "从标准输入读取模式"
 
-#: builtin/sparse-checkout.c:580
+#: builtin/sparse-checkout.c:586
 msgid "error while refreshing working directory"
 msgstr "刷新工作目录时出错"
 
@@ -21008,12 +21197,37 @@
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <路径> <新地址>"
 
-#: builtin/submodule--helper.c:2323 git.c:436 git.c:683
+#: builtin/submodule--helper.c:2294
+msgid "set the default tracking branch to master"
+msgstr "设置默认跟踪分支为 master"
+
+#: builtin/submodule--helper.c:2296
+msgid "set the default tracking branch"
+msgstr "设置默认跟踪分支"
+
+#: builtin/submodule--helper.c:2300
+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:2301
+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:2308
+msgid "--branch or --default required"
+msgstr "需要 --branch 或 --default"
+
+#: builtin/submodule--helper.c:2311
+msgid "--branch and --default are mutually exclusive"
+msgstr "--branch 和 --default 是互斥的"
+
+#: builtin/submodule--helper.c:2367 git.c:436 git.c:683
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s 不支持 --super-prefix"
 
-#: builtin/submodule--helper.c:2329
+#: builtin/submodule--helper.c:2373
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' 不是一个有效的 submodule--helper 子命令"
@@ -21635,193 +21849,187 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <路径>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:894
+#: builtin/worktree.c:60 builtin/worktree.c:972
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "删除 '%s' 失败"
 
-#: builtin/worktree.c:79
-#, c-format
-msgid "Removing worktrees/%s: not a valid directory"
-msgstr "删除工作区/%s:不是一个有效的目录"
-
 #: builtin/worktree.c:85
-#, c-format
-msgid "Removing worktrees/%s: gitdir file does not exist"
-msgstr "删除 worktrees/%s:gitdir 文件不存在"
+msgid "not a valid directory"
+msgstr "不是一个有效的目录"
 
-#: builtin/worktree.c:90 builtin/worktree.c:99
-#, c-format
-msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
-msgstr "删除 worktrees/%s:无法读取 gitdir 文件 (%s)"
+#: builtin/worktree.c:91
+msgid "gitdir file does not exist"
+msgstr "gitdir 文件不存在"
 
-#: builtin/worktree.c:109
+#: builtin/worktree.c:96 builtin/worktree.c:105
 #, c-format
-msgid ""
-"Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
-"%<PRIuMAX>)"
-msgstr "删除工作树/%s:读取过短(期望 %<PRIuMAX> 字节,读取 %<PRIuMAX>)"
+msgid "unable to read gitdir file (%s)"
+msgstr "无法读取 gitdir 文件(%s)"
 
-#: builtin/worktree.c:117
+#: builtin/worktree.c:115
 #, c-format
-msgid "Removing worktrees/%s: invalid gitdir file"
-msgstr "删除 worktrees/%s:无效的 gitdir 文件"
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "读取过短(期望 %<PRIuMAX> 字节,读取 %<PRIuMAX>)"
 
-#: builtin/worktree.c:126
+#: builtin/worktree.c:123
+msgid "invalid gitdir file"
+msgstr "无效的 gitdir 文件"
+
+#: builtin/worktree.c:131
+msgid "gitdir file points to non-existent location"
+msgstr "gitdir 文件指向一个不存在的位置"
+
+#: builtin/worktree.c:146
 #, c-format
-msgid "Removing worktrees/%s: gitdir file points to non-existent location"
-msgstr "删除 worktrees/%s:gitdir 文件的指向不存在"
+msgid "Removing %s/%s: %s"
+msgstr "删除 %s/%s: %s"
 
-#: builtin/worktree.c:165
+#: builtin/worktree.c:221
 msgid "report pruned working trees"
 msgstr "报告清除的工作区"
 
-#: builtin/worktree.c:167
+#: builtin/worktree.c:223
 msgid "expire working trees older than <time>"
 msgstr "将早于 <时间> 的工作区过期"
 
-#: builtin/worktree.c:234
+#: builtin/worktree.c:293
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' 已经存在"
 
-#: builtin/worktree.c:244
+#: builtin/worktree.c:302
 #, c-format
-msgid "unable to re-add worktree '%s'"
-msgstr "无法再次添加工作区 '%s'"
+msgid "unusable worktree destination '%s'"
+msgstr "无法使用的工作区目标 '%s'"
 
-#: builtin/worktree.c:249
+#: builtin/worktree.c:307
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
-"use 'add -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
+"use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
-"'%s' 是一个丢失但锁定的工作区,使用\n"
-"'add -f -f' 覆盖,或 'unlock' 和 'prune' 或 'remove' 清除"
+"'%s' 是一个丢失但锁定的工作区,\n"
+"使用 '%s -f -f' 覆盖,或用 'unlock' 和 'prune' 或 'remove' 清除"
 
-#: builtin/worktree.c:251
+#: builtin/worktree.c:309
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
-"use 'add -f' to override, or 'prune' or 'remove' to clear"
+"use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
-"'%s' 是一个丢失但已经注册的工作区,使用\n"
-"'add -f' 覆盖,或 'prune' 或 'remove' 清除"
+"'%s' 是一个丢失但已经注册的工作区,\n"
+"使用 '%s -f' 覆盖,或用 'prune' 或 'remove' 清除"
 
-#: builtin/worktree.c:301
+#: builtin/worktree.c:360
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "不能创建目录 '%s'"
 
-#: builtin/worktree.c:435 builtin/worktree.c:441
+#: builtin/worktree.c:494 builtin/worktree.c:500
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "准备工作区(新分支 '%s')"
 
-#: builtin/worktree.c:437
+#: builtin/worktree.c:496
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "准备工作区(重置分支 '%s',之前为 %s)"
 
-#: builtin/worktree.c:446
+#: builtin/worktree.c:505
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "准备工作区(检出 '%s')"
 
-#: builtin/worktree.c:452
+#: builtin/worktree.c:511
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "准备工作区(分离头指针 %s)"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:552
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr "检出 <分支>,即使已经被检出到其它工作区"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:555
 msgid "create a new branch"
 msgstr "创建一个新分支"
 
-#: builtin/worktree.c:498
+#: builtin/worktree.c:557
 msgid "create or reset a branch"
 msgstr "创建或重置一个分支"
 
-#: builtin/worktree.c:500
+#: builtin/worktree.c:559
 msgid "populate the new working tree"
 msgstr "生成新的工作区"
 
-#: builtin/worktree.c:501
+#: builtin/worktree.c:560
 msgid "keep the new working tree locked"
 msgstr "锁定新工作区"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:563
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "设置跟踪模式(参见 git-branch(1))"
 
-#: builtin/worktree.c:507
+#: builtin/worktree.c:566
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "尝试为新分支名匹配一个远程跟踪分支"
 
-#: builtin/worktree.c:515
+#: builtin/worktree.c:574
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b、-B 和 --detach 是互斥的"
 
-#: builtin/worktree.c:576
+#: builtin/worktree.c:635
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "只能在创建新分支时使用选项 --[no-]track "
 
-#: builtin/worktree.c:676
+#: builtin/worktree.c:755
 msgid "reason for locking"
 msgstr "锁定原因"
 
-#: builtin/worktree.c:688 builtin/worktree.c:721 builtin/worktree.c:795
-#: builtin/worktree.c:922
+#: builtin/worktree.c:767 builtin/worktree.c:800 builtin/worktree.c:874
+#: builtin/worktree.c:1000
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' 不是一个工作区"
 
-#: builtin/worktree.c:690 builtin/worktree.c:723
+#: builtin/worktree.c:769 builtin/worktree.c:802
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "主工作区无法被加锁或解锁"
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:774
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' 已被锁定,原因:%s"
 
-#: builtin/worktree.c:697
+#: builtin/worktree.c:776
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' 已被锁定"
 
-#: builtin/worktree.c:725
+#: builtin/worktree.c:804
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' 未被锁定"
 
-#: builtin/worktree.c:766
+#: builtin/worktree.c:845
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "不能移动或删除包含子模组的工作区"
 
-#: builtin/worktree.c:774
+#: builtin/worktree.c:853
 msgid "force move even if worktree is dirty or locked"
 msgstr "强制移动,即使工作区是脏的或已锁定"
 
-#: builtin/worktree.c:797 builtin/worktree.c:924
+#: builtin/worktree.c:876 builtin/worktree.c:1002
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' 是一个主工作区"
 
-#: builtin/worktree.c:802
+#: builtin/worktree.c:881
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "无法从 '%s' 算出目标名称"
 
-#: builtin/worktree.c:808
-#, c-format
-msgid "target '%s' already exists"
-msgstr "目标 '%s' 已存在"
-
-#: builtin/worktree.c:816
+#: builtin/worktree.c:894
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -21830,7 +22038,7 @@
 "无法移动一个锁定的工作区,锁定原因:%s\n"
 "使用 'move -f -f' 覆盖或先解锁"
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:896
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -21838,36 +22046,36 @@
 "无法移动一个锁定的工作区,\n"
 "使用 'move -f -f' 覆盖或先解锁"
 
-#: builtin/worktree.c:821
+#: builtin/worktree.c:899
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "验证失败,无法移动工作区:%s"
 
-#: builtin/worktree.c:826
+#: builtin/worktree.c:904
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "移动 '%s' 到 '%s' 失败"
 
-#: builtin/worktree.c:874
+#: builtin/worktree.c:952
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "在 '%s' 中执行 'git status' 失败"
 
-#: builtin/worktree.c:878
+#: builtin/worktree.c:956
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr "'%s' 包含修改或未跟踪的文件,使用 --force 删除"
 
-#: builtin/worktree.c:883
+#: builtin/worktree.c:961
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "在 '%s' 中执行 'git status' 失败,退出码 %d"
 
-#: builtin/worktree.c:906
+#: builtin/worktree.c:984
 msgid "force removal even if worktree is dirty or locked"
 msgstr "强制删除,即使工作区是脏的或已锁定"
 
-#: builtin/worktree.c:929
+#: builtin/worktree.c:1007
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -21876,7 +22084,7 @@
 "无法删除一个锁定的工作区,锁定原因:%s\n"
 "使用 'remove -f -f' 覆盖或先解锁"
 
-#: builtin/worktree.c:931
+#: builtin/worktree.c:1009
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -21884,7 +22092,7 @@
 "无法删除一个锁定的工作区,\n"
 "使用 'remove -f -f' 覆盖或先解锁"
 
-#: builtin/worktree.c:934
+#: builtin/worktree.c:1012
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "验证失败,无法删除工作区:%s"
@@ -21905,32 +22113,32 @@
 msgid "only useful for debugging"
 msgstr "只对调试有用"
 
-#: bugreport.c:14
+#: bugreport.c:15
 msgid "git version:\n"
 msgstr "git 版本:\n"
 
-#: bugreport.c:20
+#: bugreport.c:21
 #, c-format
 msgid "uname() failed with error '%s' (%d)\n"
 msgstr "uname() 失败,错误为 '%s'(%d)\n"
 
-#: bugreport.c:30
+#: bugreport.c:31
 msgid "compiler info: "
 msgstr "编译器信息:"
 
-#: bugreport.c:32
+#: bugreport.c:34
 msgid "libc info: "
 msgstr "libc 信息:"
 
-#: bugreport.c:74
+#: bugreport.c:80
 msgid "not run from a git repository - no hooks to show\n"
 msgstr "不是在 git 仓库中执行 - 没有要显示的钩子\n"
 
-#: bugreport.c:84
+#: bugreport.c:90
 msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
 msgstr "git bugreport [-o|--output-directory <文件>] [-s|--suffix <格式>]"
 
-#: bugreport.c:91
+#: bugreport.c:97
 msgid ""
 "Thank you for filling out a Git bug report!\n"
 "Please answer the following questions to help us understand your issue.\n"
@@ -21964,66 +22172,76 @@
 "请检查错误报告下面的内容。\n"
 "您可以删除任何您不想共享的内容。\n"
 
-#: bugreport.c:130
+#: bugreport.c:136
 msgid "specify a destination for the bugreport file"
 msgstr "指定错误报告文件的目标位置"
 
-#: bugreport.c:132
+#: bugreport.c:138
 msgid "specify a strftime format suffix for the filename"
 msgstr "指定文件的 strftime 格式后缀"
 
-#: bugreport.c:156
+#: bugreport.c:162
 #, c-format
 msgid "could not create leading directories for '%s'"
 msgstr "不能为 '%s' 创建先导目录"
 
-#: bugreport.c:163
+#: bugreport.c:169
 msgid "System Info"
 msgstr "系统信息"
 
-#: bugreport.c:166
+#: bugreport.c:172
 msgid "Enabled Hooks"
 msgstr "启用的钩子"
 
-#: bugreport.c:174
+#: bugreport.c:180
 #, c-format
 msgid "couldn't create a new file at '%s'"
 msgstr "不能创建新文件 '%s'"
 
-#: bugreport.c:186
+#: bugreport.c:184
+#, c-format
+msgid "unable to write to %s"
+msgstr "无法写入 %s"
+
+#: bugreport.c:194
 #, c-format
 msgid "Created new report at '%s'.\n"
 msgstr "在 '%s' 创建了新报告。\n"
 
-#: fast-import.c:3085
+#: fast-import.c:3100
 #, c-format
 msgid "Missing from marks for submodule '%s'"
 msgstr "子模组 '%s' 缺少 from 标记"
 
-#: fast-import.c:3087
+#: fast-import.c:3102
 #, c-format
 msgid "Missing to marks for submodule '%s'"
 msgstr "子模组 '%s' 缺少 to 标记"
 
-#: fast-import.c:3222
+#: fast-import.c:3237
 #, c-format
 msgid "Expected 'mark' command, got %s"
 msgstr "预期 'mark' 命令,得到 %s"
 
-#: fast-import.c:3227
+#: fast-import.c:3242
 #, c-format
 msgid "Expected 'to' command, got %s"
 msgstr "预期 'to' 命令,得到 %s"
 
-#: fast-import.c:3317
+#: fast-import.c:3334
 msgid "Expected format name:filename for submodule rewrite option"
 msgstr "子模组重写选项的预期格式为 name:filename"
 
-#: fast-import.c:3371
+#: fast-import.c:3388
 #, c-format
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "不带 --allow-unsafe-features 的输入中禁止使用功能 '%s'"
 
+#: http-fetch.c:111
+#, c-format
+msgid "argument to --packfile must be a valid hash (got '%s')"
+msgstr "--packfile 的参数必须是有效的哈希值(得到 '%s')"
+
 #: credential-cache--daemon.c:223
 #, c-format
 msgid ""
@@ -22199,30 +22417,30 @@
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr "不支持公钥文件锁定,因为 cURL < 7.44.0"
 
-#: http.c:914
+#: http.c:910
 msgid "CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0"
 msgstr "不支持 CURLSSLOPT_NO_REVOKE,因为 cURL < 7.44.0"
 
-#: http.c:993
+#: http.c:989
 msgid "Protocol restrictions not supported with cURL < 7.19.4"
 msgstr "不支持协议限制,因为 cURL < 7.19.4"
 
-#: http.c:1139
+#: http.c:1132
 #, c-format
 msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
 msgstr "不支持的 SSL 后端 '%s'。支持的 SSL 后端:"
 
-#: http.c:1146
+#: 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 后端构建"
 
-#: http.c:1150
+#: http.c:1143
 #, c-format
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "无法将 SSL 后端设置为 '%s':已经设置"
 
-#: http.c:2032
+#: http.c:2025
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -22233,111 +22451,134 @@
 "     请求:%s\n"
 "   重定向:%s"
 
-#: remote-curl.c:166
+#: remote-curl.c:168
 #, c-format
 msgid "invalid quoting in push-option value: '%s'"
 msgstr "在 push-option 取值中无效的引号:'%s'"
 
-#: remote-curl.c:263
+#: remote-curl.c:295
 #, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
 msgstr "%sinfo/refs 无效:这是一个 git 仓库么?"
 
-#: remote-curl.c:364
+#: remote-curl.c:396
 msgid "invalid server response; expected service, got flush packet"
 msgstr "无效的服务端响应。预期服务,得到 flush 包"
 
-#: remote-curl.c:395
+#: remote-curl.c:427
 #, c-format
 msgid "invalid server response; got '%s'"
 msgstr "无效的服务端响应,得到 '%s'"
 
-#: remote-curl.c:455
+#: remote-curl.c:487
 #, c-format
 msgid "repository '%s' not found"
 msgstr "仓库 '%s' 未找到"
 
-#: remote-curl.c:459
+#: remote-curl.c:491
 #, c-format
 msgid "Authentication failed for '%s'"
 msgstr "'%s' 鉴权失败"
 
-#: remote-curl.c:463
+#: remote-curl.c:495
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr "无法访问 '%s':%s"
 
-#: remote-curl.c:469
+#: remote-curl.c:501
 #, c-format
 msgid "redirecting to %s"
 msgstr "重定向到 %s"
 
-#: remote-curl.c:593
+#: remote-curl.c:630
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "当没有设置温和处理文件结束符(EOF)时,不应该有文件结束符"
 
-#: remote-curl.c:673
+#: remote-curl.c:642
+msgid "remote server sent stateless separator"
+msgstr "远程服务器发送了无状态分隔符"
+
+#: remote-curl.c:712
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr "无法倒回 rpc post 数据 - 尝试增加 http.postBuffer"
 
-#: remote-curl.c:733
+#: remote-curl.c:742
+#, c-format
+msgid "remote-curl: bad line length character: %.4s"
+msgstr "remote-curl:错误的行宽字符:%.4s"
+
+#: remote-curl.c:744
+msgid "remote-curl: unexpected response end packet"
+msgstr "remote-curl:意外响应结束包"
+
+#: remote-curl.c:820
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC 失败。%s"
 
-#: remote-curl.c:773
+#: remote-curl.c:860
 msgid "cannot handle pushes this big"
 msgstr "不能处理这么大的推送"
 
-#: remote-curl.c:888
+#: remote-curl.c:975
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "不能压缩请求,zlib 压缩错误 %d"
 
-#: remote-curl.c:892
+#: remote-curl.c:979
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "不能压缩请求,zlib 结束错误 %d"
 
-#: remote-curl.c:1023
+#: remote-curl.c:1029
+#, c-format
+msgid "%d bytes of length header were received"
+msgstr "收到了 %d 字节长度的头信息"
+
+#: remote-curl.c:1031
+#, c-format
+msgid "%d bytes of body are still expected"
+msgstr "预期仍然需要 %d 个字节的正文"
+
+#: remote-curl.c:1120
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "哑 http 传输不支持 shalllow 能力"
 
-#: remote-curl.c:1038
+#: remote-curl.c:1135
 msgid "fetch failed."
 msgstr "获取失败。"
 
-#: remote-curl.c:1086
+#: remote-curl.c:1183
 msgid "cannot fetch by sha1 over smart http"
 msgstr "无法通过智能 HTTP 获取 sha1"
 
-#: remote-curl.c:1130 remote-curl.c:1136
+#: remote-curl.c:1227 remote-curl.c:1233
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "协议错误:期望 sha/ref,却得到 '%s'"
 
-#: remote-curl.c:1148 remote-curl.c:1263
+#: remote-curl.c:1245 remote-curl.c:1360
 #, c-format
 msgid "http transport does not support %s"
 msgstr "http 传输协议不支持 %s"
 
-#: remote-curl.c:1184
+#: remote-curl.c:1281
 msgid "git-http-push failed"
 msgstr "git-http-push 失败"
 
-#: remote-curl.c:1369
+#: remote-curl.c:1466
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl:用法:git remote-curl <远程> [<url>]"
 
-#: remote-curl.c:1401
+#: remote-curl.c:1498
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl:错误读取来自 git 的命令流"
 
-#: remote-curl.c:1408
+#: remote-curl.c:1505
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl:尝试没有本地仓库下获取"
 
-#: remote-curl.c:1448
+#: remote-curl.c:1546
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl:未知的来自 git 的命令 '%s'"
@@ -23345,29 +23586,29 @@
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "无法递归进子模组路径 '$displaypath'"
 
-#: git-submodule.sh:878
+#: git-submodule.sh:852
 msgid "The --cached option cannot be used with the --files option"
 msgstr "选项 --cached 不能和选项 --files 同时使用"
 
-#: git-submodule.sh:930
+#: git-submodule.sh:904
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "意外的模式 $mod_dst"
 
 #  译者:注意保持前导空格
-#: git-submodule.sh:950
+#: git-submodule.sh:924
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr "  警告:$display_name 未包含提交 $sha1_src"
 
 #  译者:注意保持前导空格
-#: git-submodule.sh:953
+#: git-submodule.sh:927
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr "  警告:$display_name 未包含提交 $sha1_dst"
 
 #  译者:注意保持前导空格
-#: git-submodule.sh:956
+#: git-submodule.sh:930
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr "  警告:$display_name 未包含提交 $sha1_src 和 $sha1_dst"
@@ -23766,44 +24007,44 @@
 msgstr[0] "触碰了 %d 个路径\n"
 msgstr[1] "触碰了 %d 个路径\n"
 
-#: git-add--interactive.perl:1053
+#: git-add--interactive.perl:1055
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
 msgstr "如果补丁能干净地应用,编辑块将立即标记为暂存。"
 
-#: git-add--interactive.perl:1056
+#: git-add--interactive.perl:1058
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
 msgstr "如果补丁能干净地应用,编辑块将立即标记为贮藏。"
 
-#: git-add--interactive.perl:1059
+#: git-add--interactive.perl:1061
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
 msgstr "如果补丁能干净地应用,编辑块将立即标记为未暂存。"
 
-#: git-add--interactive.perl:1062 git-add--interactive.perl:1071
-#: git-add--interactive.perl:1077
+#: git-add--interactive.perl:1064 git-add--interactive.perl:1073
+#: git-add--interactive.perl:1079
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
 msgstr "如果补丁能干净地应用,编辑块将立即标记为应用。"
 
-#: git-add--interactive.perl:1065 git-add--interactive.perl:1068
-#: git-add--interactive.perl:1074
+#: git-add--interactive.perl:1067 git-add--interactive.perl:1070
+#: git-add--interactive.perl:1076
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
 msgstr "如果补丁能干净地应用,编辑块将立即标记为丢弃。"
 
-#: git-add--interactive.perl:1111
+#: git-add--interactive.perl:1113
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "为写入打开块编辑文件失败:%s"
 
-#: git-add--interactive.perl:1118
+#: git-add--interactive.perl:1120
 #, perl-format
 msgid ""
 "---\n"
@@ -23816,12 +24057,12 @@
 "要删除 '%s' 开始的行,删除它们。\n"
 "以 %s 开始的行将被删除。\n"
 
-#: git-add--interactive.perl:1140
+#: git-add--interactive.perl:1142
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "无法读取块编辑文件:%s"
 
-#: git-add--interactive.perl:1248
+#: git-add--interactive.perl:1250
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -23835,7 +24076,7 @@
 "a - 暂存该块和本文件中后面的全部块\n"
 "d - 不暂存该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1254
+#: git-add--interactive.perl:1256
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -23849,7 +24090,7 @@
 "a - 贮藏该块和本文件中后面的全部块\n"
 "d - 不贮藏该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1260
+#: git-add--interactive.perl:1262
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -23863,7 +24104,7 @@
 "a - 不暂存该块和本文件中后面的全部块\n"
 "d - 不要不暂存该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1268
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -23877,7 +24118,7 @@
 "a - 应用该块和本文件中后面的全部块\n"
 "d - 不要应用该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1272 git-add--interactive.perl:1290
+#: git-add--interactive.perl:1274 git-add--interactive.perl:1292
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -23891,7 +24132,7 @@
 "a - 丢弃该块和本文件中后面的全部块\n"
 "d - 不要丢弃该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1278
+#: git-add--interactive.perl:1280
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -23905,7 +24146,7 @@
 "a - 丢弃该块和本文件中后面的全部块\n"
 "d - 不要丢弃该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1284
+#: git-add--interactive.perl:1286
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -23919,7 +24160,7 @@
 "a - 应用该块和本文件中后面的全部块\n"
 "d - 不要应用该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1296
+#: git-add--interactive.perl:1298
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -23933,7 +24174,7 @@
 "a - 应用该块和本文件中后面的全部块\n"
 "d - 不要应用该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1311
+#: git-add--interactive.perl:1313
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -23955,85 +24196,90 @@
 "e - 手动编辑当前块\n"
 "? - 显示帮助\n"
 
-#: git-add--interactive.perl:1342
+#: git-add--interactive.perl:1344
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "选中的块不能应用到索引!\n"
 
-#: git-add--interactive.perl:1357
+#: git-add--interactive.perl:1359
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "忽略未合入的:%s\n"
 
-#: git-add--interactive.perl:1468
+#: git-add--interactive.perl:1478
 #, perl-format
 msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
 msgstr "将模式变更应用到工作区 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1469
+#: git-add--interactive.perl:1479
 #, perl-format
 msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
 msgstr "将删除操作应用到工作区 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1470
+#: git-add--interactive.perl:1480
+#, perl-format
+msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
+msgstr "将添加操作应用到工作区 [y,n,q,a,d%s,?]? "
+
+#: git-add--interactive.perl:1481
 #, perl-format
 msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
 msgstr "将该块应用到工作区 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1570
+#: git-add--interactive.perl:1587
 msgid "No other hunks to goto\n"
 msgstr "没有其它可供跳转的块\n"
 
-#: git-add--interactive.perl:1588
+#: git-add--interactive.perl:1605
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "无效数字:'%s'\n"
 
-#: git-add--interactive.perl:1593
+#: git-add--interactive.perl:1610
 #, perl-format
 msgid "Sorry, only %d hunk available.\n"
 msgid_plural "Sorry, only %d hunks available.\n"
 msgstr[0] "对不起,只有 %d 个可用块。\n"
 msgstr[1] "对不起,只有 %d 个可用块。\n"
 
-#: git-add--interactive.perl:1619
+#: git-add--interactive.perl:1636
 msgid "No other hunks to search\n"
 msgstr "没有其它可供查找的块\n"
 
-#: git-add--interactive.perl:1636
+#: git-add--interactive.perl:1653
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "错误的正则表达式 %s:%s\n"
 
-#: git-add--interactive.perl:1646
+#: git-add--interactive.perl:1663
 msgid "No hunk matches the given pattern\n"
 msgstr "没有和给定模式相匹配的块\n"
 
-#: git-add--interactive.perl:1658 git-add--interactive.perl:1680
+#: git-add--interactive.perl:1675 git-add--interactive.perl:1697
 msgid "No previous hunk\n"
 msgstr "没有前一个块\n"
 
-#: git-add--interactive.perl:1667 git-add--interactive.perl:1686
+#: git-add--interactive.perl:1684 git-add--interactive.perl:1703
 msgid "No next hunk\n"
 msgstr "没有下一个块\n"
 
-#: git-add--interactive.perl:1692
+#: git-add--interactive.perl:1709
 msgid "Sorry, cannot split this hunk\n"
 msgstr "对不起,不能拆分这个块\n"
 
-#: git-add--interactive.perl:1698
+#: git-add--interactive.perl:1715
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
 msgstr[0] "拆分为 %d 块。\n"
 msgstr[1] "拆分为 %d 块。\n"
 
-#: git-add--interactive.perl:1708
+#: git-add--interactive.perl:1725
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "对不起,不能编辑这个块\n"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1773
+#: git-add--interactive.perl:1790
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -24050,19 +24296,19 @@
 "diff          - 显示 HEAD 和索引间差异\n"
 "add untracked - 添加未跟踪文件的内容至暂存列表\n"
 
-#: git-add--interactive.perl:1790 git-add--interactive.perl:1795
-#: git-add--interactive.perl:1798 git-add--interactive.perl:1805
-#: git-add--interactive.perl:1808 git-add--interactive.perl:1815
-#: git-add--interactive.perl:1819 git-add--interactive.perl:1825
+#: git-add--interactive.perl:1807 git-add--interactive.perl:1812
+#: git-add--interactive.perl:1815 git-add--interactive.perl:1822
+#: git-add--interactive.perl:1825 git-add--interactive.perl:1832
+#: git-add--interactive.perl:1836 git-add--interactive.perl:1842
 msgid "missing --"
 msgstr "缺失 --"
 
-#: git-add--interactive.perl:1821
+#: git-add--interactive.perl:1838
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "未知的 --patch 模式:%s"
 
-#: git-add--interactive.perl:1827 git-add--interactive.perl:1833
+#: git-add--interactive.perl:1844 git-add--interactive.perl:1850
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "无效的参数 %s,期望是 --"
@@ -24365,56 +24611,56 @@
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) 添加 to:%s 自行 '%s'\n"
 
-#: git-send-email.perl:1718
+#: git-send-email.perl:1722
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(non-mbox) 添加 cc:%s 自行 '%s'\n"
 
-#: git-send-email.perl:1753
+#: git-send-email.perl:1757
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(body) 添加 cc: %s 自行 '%s'\n"
 
-#: git-send-email.perl:1864
+#: git-send-email.perl:1868
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) 不能执行 '%s'"
 
-#: git-send-email.perl:1871
+#: git-send-email.perl:1875
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) 添加 %s: %s 自:'%s'\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1879
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) 无法关闭管道至 '%s'"
 
-#: git-send-email.perl:1905
+#: git-send-email.perl:1909
 msgid "cannot send message as 7bit"
 msgstr "不能以 7bit 形式发送信息"
 
-#: git-send-email.perl:1913
+#: git-send-email.perl:1917
 msgid "invalid transfer encoding"
 msgstr "无效的传送编码"
 
-#: git-send-email.perl:1954 git-send-email.perl:2006 git-send-email.perl:2016
+#: git-send-email.perl:1958 git-send-email.perl:2010 git-send-email.perl:2020
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "不能打开 %s:%s\n"
 
-#: git-send-email.perl:1957
+#: git-send-email.perl:1961
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr "%s:补丁包含一个超过 998 字符的行"
 
-#: git-send-email.perl:1974
+#: git-send-email.perl:1978
 #, 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:1978
+#: git-send-email.perl:1982
 #, 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 38670cb..9334b46 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -292,8 +292,8 @@
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-05-27 07:23+0800\n"
-"PO-Revision-Date: 2020-05-30 00:36+0800\n"
+"POT-Creation-Date: 2020-07-10 09:53+0800\n"
+"PO-Revision-Date: 2020-07-20 18:34+0800\n"
 "Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n"
 "Language-Team: Chinese (Traditional) <zh-l10n@lists.linux.org.tw>\n"
 "Language: zh_TW\n"
@@ -395,21 +395,21 @@
 msgid "ignoring unmerged: %s"
 msgstr "忽略未合併:%s"
 
-#: add-interactive.c:929 add-patch.c:1675 git-add--interactive.perl:1366
+#: add-interactive.c:929 add-patch.c:1691 git-add--interactive.perl:1368
 #, c-format
 msgid "Only binary files changed.\n"
 msgstr "只有二進位檔案被修改。\n"
 
-#: add-interactive.c:931 add-patch.c:1673 git-add--interactive.perl:1368
+#: add-interactive.c:931 add-patch.c:1689 git-add--interactive.perl:1370
 #, c-format
 msgid "No changes.\n"
 msgstr "沒有修改。\n"
 
-#: add-interactive.c:935 git-add--interactive.perl:1376
+#: add-interactive.c:935 git-add--interactive.perl:1378
 msgid "Patch update"
 msgstr "修補檔更新"
 
-#: add-interactive.c:974 git-add--interactive.perl:1754
+#: add-interactive.c:974 git-add--interactive.perl:1771
 msgid "Review diff"
 msgstr "檢視 diff"
 
@@ -477,11 +477,11 @@
 msgid "(empty) select nothing"
 msgstr "(空)全不選取"
 
-#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1851
+#: add-interactive.c:1083 builtin/clean.c:816 git-add--interactive.perl:1868
 msgid "*** Commands ***"
 msgstr "*** 指令 ***"
 
-#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1848
+#: add-interactive.c:1084 builtin/clean.c:817 git-add--interactive.perl:1865
 msgid "What now"
 msgstr "請選擇"
 
@@ -498,7 +498,7 @@
 #: builtin/merge.c:276 builtin/pull.c:190 builtin/submodule--helper.c:409
 #: builtin/submodule--helper.c:1394 builtin/submodule--helper.c:1397
 #: builtin/submodule--helper.c:1902 builtin/submodule--helper.c:1905
-#: builtin/submodule--helper.c:2148 bugreport.c:129
+#: builtin/submodule--helper.c:2148 bugreport.c:135
 #: git-add--interactive.perl:213
 msgid "path"
 msgstr "路徑"
@@ -507,33 +507,38 @@
 msgid "could not refresh index"
 msgstr "無法重新整理索引"
 
-#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1765
+#: add-interactive.c:1157 builtin/clean.c:781 git-add--interactive.perl:1782
 #, c-format
 msgid "Bye.\n"
 msgstr "再見。\n"
 
-#: add-patch.c:34 git-add--interactive.perl:1428
+#: add-patch.c:34 git-add--interactive.perl:1430
 #, c-format, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "暫存模式變更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:35 git-add--interactive.perl:1429
+#: add-patch.c:35 git-add--interactive.perl:1431
 #, c-format, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
-msgstr "暫存刪除動作 [y,n,q,a,d%s,?]? "
+msgstr "暫存刪除變更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:36 git-add--interactive.perl:1430
+#: add-patch.c:36 git-add--interactive.perl:1432
+#, c-format, perl-format
+msgid "Stage addition [y,n,q,a,d%s,?]? "
+msgstr "暫存新增變更 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:37 git-add--interactive.perl:1433
 #, c-format, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "暫存此區塊 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:38
+#: add-patch.c:39
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "staging."
 msgstr "如果修補檔能乾淨地套用,編輯區塊將立即標記為暫存。"
 
-#: add-patch.c:41
+#: add-patch.c:42
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -547,28 +552,33 @@
 "a - 暫存此區塊和本檔案中後面的全部區塊\n"
 "d - 不暫存此區塊和本檔案中後面的全部區塊\n"
 
-#: add-patch.c:55 git-add--interactive.perl:1433
+#: add-patch.c:56 git-add--interactive.perl:1436
 #, c-format, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "儲藏模式變更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:56 git-add--interactive.perl:1434
+#: add-patch.c:57 git-add--interactive.perl:1437
 #, c-format, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
-msgstr "儲藏刪除動作 [y,n,q,a,d%s,?]? "
+msgstr "儲藏刪除變更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:57 git-add--interactive.perl:1435
+#: add-patch.c:58 git-add--interactive.perl:1438
+#, c-format, perl-format
+msgid "Stash addition [y,n,q,a,d%s,?]? "
+msgstr "儲藏新增變更 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:59 git-add--interactive.perl:1439
 #, c-format, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "儲藏此區塊 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:59
+#: add-patch.c:61
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "stashing."
 msgstr "如果修補檔能乾淨地套用,編輯區塊將立即標記為儲藏。"
 
-#: add-patch.c:62
+#: add-patch.c:64
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -582,28 +592,33 @@
 "a - 儲藏此區塊和本檔案中後面的全部區塊\n"
 "d - 不儲藏此區塊和本檔案中後面的全部區塊\n"
 
-#: add-patch.c:78 git-add--interactive.perl:1438
+#: add-patch.c:80 git-add--interactive.perl:1442
 #, c-format, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr "取消暫存模式變更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:79 git-add--interactive.perl:1439
+#: add-patch.c:81 git-add--interactive.perl:1443
 #, c-format, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
-msgstr "取消暫存刪除動作 [y,n,q,a,d%s,?]? "
+msgstr "取消暫存刪除變更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:80 git-add--interactive.perl:1440
+#: add-patch.c:82 git-add--interactive.perl:1444
+#, c-format, perl-format
+msgid "Unstage addition [y,n,q,a,d%s,?]? "
+msgstr "取消暫存新增變更 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:83 git-add--interactive.perl:1445
 #, c-format, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "取消暫存此區塊 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:82
+#: add-patch.c:85
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be marked for "
 "unstaging."
 msgstr "如果修補檔能乾淨地套用,編輯區塊將立即標記為未暫存。"
 
-#: add-patch.c:85
+#: add-patch.c:88
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -617,28 +632,33 @@
 "a - 不暫存此區塊和本檔案中後面的全部區塊\n"
 "d - 不要不暫存此區塊和本檔案中後面的全部區塊\n"
 
-#: add-patch.c:100 git-add--interactive.perl:1443
+#: add-patch.c:103 git-add--interactive.perl:1448
 #, c-format, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr "將模式變更套用到索引 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:101 git-add--interactive.perl:1444
+#: add-patch.c:104 git-add--interactive.perl:1449
 #, c-format, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
-msgstr "將刪除動作套用到索引 [y,n,q,a,d%s,?]? "
+msgstr "將刪除變更套用到索引 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:102 git-add--interactive.perl:1445
+#: add-patch.c:105 git-add--interactive.perl:1450
+#, c-format, perl-format
+msgid "Apply addition to index [y,n,q,a,d%s,?]? "
+msgstr "套用新增變更至索引 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:106 git-add--interactive.perl:1451
 #, c-format, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr "將此區塊套用到索引 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:104 add-patch.c:169 add-patch.c:212
+#: 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 "如果修補檔能乾淨地套用,編輯區塊將立即標記為套用。"
 
-#: add-patch.c:107
+#: add-patch.c:111
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -652,31 +672,37 @@
 "a - 套用此區塊和本檔案中後面的全部區塊\n"
 "d - 不要套用此區塊和本檔案中後面的全部區塊\n"
 
-#: add-patch.c:122 git-add--interactive.perl:1448
-#: git-add--interactive.perl:1463
+#: add-patch.c:126 git-add--interactive.perl:1454
+#: git-add--interactive.perl:1472
 #, c-format, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr "從工作區中捨棄模式變更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:123 git-add--interactive.perl:1449
-#: git-add--interactive.perl:1464
+#: add-patch.c:127 git-add--interactive.perl:1455
+#: git-add--interactive.perl:1473
 #, c-format, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
-msgstr "從工作區中捨棄刪除動作 [y,n,q,a,d%s,?]? "
+msgstr "從工作區中捨棄刪除變更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:124 git-add--interactive.perl:1450
-#: git-add--interactive.perl:1465
+#: add-patch.c:128 git-add--interactive.perl:1456
+#: git-add--interactive.perl:1474
+#, c-format, perl-format
+msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
+msgstr "放棄工作目錄的新增變更 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:129 git-add--interactive.perl:1457
+#: git-add--interactive.perl:1475
 #, c-format, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr "從工作區中捨棄此區塊 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:126 add-patch.c:148 add-patch.c:191
+#: 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 "如果修補檔能乾淨地套用,編輯區塊將立即標記為捨棄。"
 
-#: add-patch.c:129 add-patch.c:194
+#: add-patch.c:134 add-patch.c:202
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -690,22 +716,27 @@
 "a - 捨棄此區塊和本檔案中後面的全部區塊\n"
 "d - 不要捨棄此區塊和本檔案中後面的全部區塊\n"
 
-#: add-patch.c:144 add-patch.c:187 git-add--interactive.perl:1453
+#: add-patch.c:149 add-patch.c:194 git-add--interactive.perl:1460
 #, c-format, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "從索引和工作區中捨棄模式變更 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:145 add-patch.c:188 git-add--interactive.perl:1454
+#: add-patch.c:150 add-patch.c:195 git-add--interactive.perl:1461
 #, c-format, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "從索引和工作區中捨棄刪除 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:146 add-patch.c:189 git-add--interactive.perl:1455
+#: add-patch.c:151 add-patch.c:196 git-add--interactive.perl:1462
+#, c-format, perl-format
+msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
+msgstr "放棄索引及工作目錄的新增變更 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:152 add-patch.c:197 git-add--interactive.perl:1463
 #, c-format, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "從索引和工作區中捨棄此區塊 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:151
+#: add-patch.c:157
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -719,22 +750,27 @@
 "a - 捨棄此區塊和本檔案中後面的全部區塊\n"
 "d - 不要捨棄此區塊和本檔案中後面的全部區塊\n"
 
-#: add-patch.c:165 add-patch.c:208 git-add--interactive.perl:1458
+#: add-patch.c:171 add-patch.c:216 git-add--interactive.perl:1466
 #, c-format, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "將模式變更套用到索引和工作區 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:166 add-patch.c:209 git-add--interactive.perl:1459
+#: add-patch.c:172 add-patch.c:217 git-add--interactive.perl:1467
 #, c-format, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "將刪除動作套用到索引和工作區 [y,n,q,a,d%s,?]? "
+msgstr "將刪除變更套用到索引和工作區 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:167 add-patch.c:210 git-add--interactive.perl:1460
+#: add-patch.c:173 add-patch.c:218 git-add--interactive.perl:1468
+#, c-format, perl-format
+msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
+msgstr "套用索引及工作目錄的新增變更 [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:174 add-patch.c:219 git-add--interactive.perl:1469
 #, c-format, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "將此區塊套用到索引和工作區 [y,n,q,a,d%s,?]? "
 
-#: add-patch.c:172
+#: add-patch.c:179
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -748,7 +784,7 @@
 "a - 套用此區塊和本檔案中後面的全部區塊\n"
 "d - 不要套用此區塊和本檔案中後面的全部區塊\n"
 
-#: add-patch.c:215
+#: add-patch.c:224
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -762,40 +798,40 @@
 "a - 套用此區塊和本檔案中後面的全部區塊\n"
 "d - 不要套用此區塊和本檔案中後面的全部區塊\n"
 
-#: add-patch.c:319
+#: add-patch.c:328
 #, c-format
 msgid "could not parse hunk header '%.*s'"
 msgstr "無法解析區塊標頭 '%.*s'"
 
-#: add-patch.c:338 add-patch.c:342
+#: add-patch.c:347 add-patch.c:351
 #, c-format
 msgid "could not parse colored hunk header '%.*s'"
 msgstr "無法解析上色過的區塊標頭 '%.*s'"
 
-#: add-patch.c:396
+#: add-patch.c:405
 msgid "could not parse diff"
 msgstr "無法解析差異 (diff)"
 
-#: add-patch.c:415
+#: add-patch.c:424
 msgid "could not parse colored diff"
 msgstr "無法解析上色過的差異 (diff)"
 
-#: add-patch.c:429
+#: add-patch.c:438
 #, c-format
 msgid "failed to run '%s'"
 msgstr "無法執行 '%s'"
 
-#: add-patch.c:588
+#: add-patch.c:602
 msgid "mismatched output from interactive.diffFilter"
 msgstr "interactive.diffFilter 的輸出不符"
 
-#: add-patch.c:589
+#: add-patch.c:603
 msgid ""
 "Your filter must maintain a one-to-one correspondence\n"
 "between its input and output lines."
 msgstr "您的過濾器必須在其輸入及輸出行維持一對一的對應關係。"
 
-#: add-patch.c:762
+#: add-patch.c:776
 #, c-format
 msgid ""
 "expected context line #%d in\n"
@@ -804,7 +840,7 @@
 "應有上下文行 #%d 於\n"
 "%.*s"
 
-#: add-patch.c:777
+#: add-patch.c:791
 #, c-format
 msgid ""
 "hunks do not overlap:\n"
@@ -817,11 +853,11 @@
 "\t不以下述結尾:\n"
 "%.*s"
 
-#: add-patch.c:1053 git-add--interactive.perl:1112
+#: add-patch.c:1067 git-add--interactive.perl:1114
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "手動區塊編輯模式 -- 檢視底部的快速指南。\n"
 
-#: add-patch.c:1057
+#: add-patch.c:1071
 #, c-format
 msgid ""
 "---\n"
@@ -835,7 +871,7 @@
 "以 %c 開始的行將被刪除。\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:1071 git-add--interactive.perl:1126
+#: add-patch.c:1085 git-add--interactive.perl:1128
 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"
@@ -844,11 +880,11 @@
 "如果不能乾淨地套用,您將有機會重新編輯。如果此區塊的全部內容刪除,則\n"
 "此次編輯被終止,此區塊不會被修改。\n"
 
-#: add-patch.c:1104
+#: add-patch.c:1118
 msgid "could not parse hunk header"
 msgstr "無法解析區塊標頭"
 
-#: add-patch.c:1149
+#: add-patch.c:1163
 msgid "'git apply --cached' failed"
 msgstr "「git apply --cached」失敗"
 
@@ -864,24 +900,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:1218 git-add--interactive.perl:1239
+#: add-patch.c:1232 git-add--interactive.perl:1241
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr "您的編輯塊不能被應用。重新編輯(選擇 \"no\" 捨棄!) [y/n]? "
 
-#: add-patch.c:1261
+#: add-patch.c:1275
 msgid "The selected hunks do not apply to the index!"
 msgstr "選取的區塊不會套用進索引!"
 
-#: add-patch.c:1262 git-add--interactive.perl:1343
+#: add-patch.c:1276 git-add--interactive.perl:1345
 msgid "Apply them to the worktree anyway? "
 msgstr "無論如何都要套用到工作區嗎?"
 
-#: add-patch.c:1269 git-add--interactive.perl:1346
+#: add-patch.c:1283 git-add--interactive.perl:1348
 msgid "Nothing was applied.\n"
 msgstr "未套用。\n"
 
-#: add-patch.c:1326
+#: add-patch.c:1340
 msgid ""
 "j - leave this hunk undecided, see next undecided hunk\n"
 "J - leave this hunk undecided, see next hunk\n"
@@ -903,68 +939,68 @@
 "e - 手動編輯目前區塊\n"
 "? - 顯示說明\n"
 
-#: add-patch.c:1447 add-patch.c:1457
+#: add-patch.c:1463 add-patch.c:1473
 msgid "No previous hunk"
 msgstr "沒有上一個區塊"
 
-#: add-patch.c:1452 add-patch.c:1462
+#: add-patch.c:1468 add-patch.c:1478
 msgid "No next hunk"
 msgstr "沒有下一個區塊"
 
-#: add-patch.c:1468
+#: add-patch.c:1484
 msgid "No other hunks to goto"
 msgstr "沒有其它可供跳轉的區塊"
 
-#: add-patch.c:1479 git-add--interactive.perl:1577
+#: add-patch.c:1495 git-add--interactive.perl:1594
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "跳轉到哪個區塊(<Enter> 檢視更多)? "
 
-#: add-patch.c:1480 git-add--interactive.perl:1579
+#: add-patch.c:1496 git-add--interactive.perl:1596
 msgid "go to which hunk? "
 msgstr "跳轉到哪個區塊?"
 
-#: add-patch.c:1491
+#: add-patch.c:1507
 #, c-format
 msgid "Invalid number: '%s'"
 msgstr "無效數字:'%s'"
 
-#: add-patch.c:1496
+#: add-patch.c:1512
 #, c-format
 msgid "Sorry, only %d hunk available."
 msgid_plural "Sorry, only %d hunks available."
 msgstr[0] "對不起,只有 %d 個可用區塊。"
 
-#: add-patch.c:1505
+#: add-patch.c:1521
 msgid "No other hunks to search"
 msgstr "沒有其它可供尋找的區塊"
 
-#: add-patch.c:1511 git-add--interactive.perl:1623
+#: add-patch.c:1527 git-add--interactive.perl:1640
 msgid "search for regex? "
 msgstr "使用正規表示式搜尋?"
 
-#: add-patch.c:1526
+#: add-patch.c:1542
 #, c-format
 msgid "Malformed search regexp %s: %s"
 msgstr "錯誤的正規表示式 %s:%s"
 
-#: add-patch.c:1543
+#: add-patch.c:1559
 msgid "No hunk matches the given pattern"
 msgstr "沒有和提供模式相符合的區塊"
 
-#: add-patch.c:1550
+#: add-patch.c:1566
 msgid "Sorry, cannot split this hunk"
 msgstr "對不起,不能分割這個區塊"
 
-#: add-patch.c:1554
+#: add-patch.c:1570
 #, c-format
 msgid "Split into %d hunks."
 msgstr "分割為 %d 塊。"
 
-#: add-patch.c:1558
+#: add-patch.c:1574
 msgid "Sorry, cannot edit this hunk"
 msgstr "對不起,不能編輯這個區塊"
 
-#: add-patch.c:1609
+#: add-patch.c:1625
 msgid "'git apply' failed"
 msgstr "'git apply' 失敗"
 
@@ -1631,7 +1667,7 @@
 
 #: apply.c:5008 builtin/am.c:2238 builtin/interpret-trailers.c:98
 #: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3458 builtin/rebase.c:1332
+#: builtin/pack-objects.c:3530 builtin/rebase.c:1332
 msgid "action"
 msgstr "動作"
 
@@ -1720,7 +1756,7 @@
 msgid "path too long (%d chars, SHA1: %s): %s"
 msgstr "路徑太長(%d 字元,SHA1:%s):%s"
 
-#: archive-zip.c:480 builtin/pack-objects.c:232 builtin/pack-objects.c:235
+#: archive-zip.c:480 builtin/pack-objects.c:243 builtin/pack-objects.c:246
 #, c-format
 msgid "deflate error (%d)"
 msgstr "壓縮錯誤 (%d)"
@@ -1789,8 +1825,8 @@
 msgstr "為歸檔中每個路徑名加上前綴"
 
 #: archive.c:467 builtin/blame.c:861 builtin/blame.c:865 builtin/blame.c:866
-#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1162
-#: builtin/fast-export.c:1164 builtin/fast-export.c:1168 builtin/grep.c:907
+#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1208
+#: builtin/fast-export.c:1210 builtin/fast-export.c:1214 builtin/grep.c:907
 #: 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
@@ -2012,10 +2048,10 @@
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr "--reverse 和 --first-parent 共用,需要指定最新的提交"
 
-#: blame.c:2821 bundle.c:167 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
+#: blame.c:2821 bundle.c:187 ref-filter.c:2200 remote.c:1924 sequencer.c:2018
 #: sequencer.c:4466 submodule.c:847 builtin/commit.c:1047 builtin/log.c:405
 #: builtin/log.c:1012 builtin/log.c:1541 builtin/log.c:1945 builtin/log.c:2235
-#: builtin/merge.c:415 builtin/pack-objects.c:3276 builtin/pack-objects.c:3291
+#: builtin/merge.c:415 builtin/pack-objects.c:3348 builtin/pack-objects.c:3363
 #: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr "版本遍歷設定失敗"
@@ -2168,82 +2204,86 @@
 msgid "HEAD of working tree %s is not updated"
 msgstr "工作區 %s 的 HEAD 指向沒有被更新"
 
-#: bundle.c:36
+#: bundle.c:47
 #, c-format
 msgid "'%s' does not look like a v2 bundle file"
 msgstr "'%s' 不像是一個 v2 版本的包檔案"
 
-#: bundle.c:64
+#: bundle.c:69
+msgid "unknown hash algorithm length"
+msgstr "未知的雜湊算法長度"
+
+#: bundle.c:84
 #, c-format
 msgid "unrecognized header: %s%s (%d)"
 msgstr "無法識別的包頭:%s%s (%d)"
 
-#: bundle.c:90 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
+#: bundle.c:110 rerere.c:480 rerere.c:690 sequencer.c:2270 sequencer.c:3034
 #: builtin/commit.c:814
 #, c-format
 msgid "could not open '%s'"
 msgstr "不能開啟 '%s'"
 
-#: bundle.c:143
+#: bundle.c:163
 msgid "Repository lacks these prerequisite commits:"
 msgstr "版本庫中缺少這些必備的提交:"
 
-#: bundle.c:146
+#: bundle.c:166
 msgid "need a repository to verify a bundle"
 msgstr "需要版本庫驗證一個包"
 
-#: bundle.c:197
+#: bundle.c:217
 #, c-format
 msgid "The bundle contains this ref:"
 msgid_plural "The bundle contains these %d refs:"
 msgstr[0] "這個包中含有這 %d 個引用:"
 
-#: bundle.c:204
+#: bundle.c:224
 msgid "The bundle records a complete history."
 msgstr "這個包記錄一個完整歷史。"
 
-#: bundle.c:206
+#: bundle.c:226
 #, c-format
 msgid "The bundle requires this ref:"
 msgid_plural "The bundle requires these %d refs:"
 msgstr[0] "這個包需要這 %d 個引用:"
 
-#: bundle.c:273
+#: bundle.c:293
 msgid "unable to dup bundle descriptor"
 msgstr "無法複製 bundle 描述符"
 
-#: bundle.c:280
+#: bundle.c:300
 msgid "Could not spawn pack-objects"
 msgstr "不能生成 pack-objects 進程"
 
-#: bundle.c:291
+#: bundle.c:311
 msgid "pack-objects died"
 msgstr "pack-objects 終止"
 
-#: bundle.c:333
+#: bundle.c:353
 msgid "rev-list died"
 msgstr "rev-list 終止"
 
-#: bundle.c:382
+#: bundle.c:402
 #, c-format
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "引用 '%s' 被 rev-list 選項排除"
 
-#: bundle.c:461 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
+#: bundle.c:481 builtin/log.c:208 builtin/log.c:1834 builtin/shortlog.c:306
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "無法識別的參數:%s"
 
-#: bundle.c:469
+#: bundle.c:489
 msgid "Refusing to create empty bundle."
 msgstr "不能建立空包。"
 
-#: bundle.c:479
+#: bundle.c:499
 #, c-format
 msgid "cannot create '%s'"
 msgstr "不能建立 '%s'"
 
-#: bundle.c:504
+#: bundle.c:524
 msgid "index-pack died"
 msgstr "index-pack 終止"
 
@@ -2252,266 +2292,259 @@
 msgid "invalid color value: %.*s"
 msgstr "無效的顏色值:%.*s"
 
-#: commit-graph.c:183
+#: commit-graph.c:238
 msgid "commit-graph file is too small"
 msgstr "提交圖形檔案太小"
 
-#: commit-graph.c:248
+#: commit-graph.c:303
 #, c-format
 msgid "commit-graph signature %X does not match signature %X"
 msgstr "提交圖形簽名 %X 和簽名 %X 不符合"
 
-#: commit-graph.c:255
+#: commit-graph.c:310
 #, c-format
 msgid "commit-graph version %X does not match version %X"
 msgstr "提交圖形版本 %X 和版本 %X 不符合"
 
-#: commit-graph.c:262
+#: commit-graph.c:317
 #, c-format
 msgid "commit-graph hash version %X does not match version %X"
 msgstr "提交圖形雜湊版本 %X 和版本 %X 不符合"
 
-#: commit-graph.c:284
+#: commit-graph.c:339
 msgid "commit-graph chunk lookup table entry missing; file may be incomplete"
 msgstr "提交圖形區塊尋找表條目遺失,檔案可能不完整"
 
-#: commit-graph.c:294
+#: commit-graph.c:349
 #, c-format
 msgid "commit-graph improper chunk offset %08x%08x"
 msgstr "提交圖形不正確的區塊位移 %08x%08x"
 
-#: commit-graph.c:362
+#: commit-graph.c:417
 #, c-format
 msgid "commit-graph chunk id %08x appears multiple times"
 msgstr "提交圖形區塊 id %08x 出現了多次"
 
-#: commit-graph.c:436
+#: commit-graph.c:491
 msgid "commit-graph has no base graphs chunk"
 msgstr "提交圖形沒有基礎圖形區塊"
 
-#: commit-graph.c:446
+#: commit-graph.c:501
 msgid "commit-graph chain does not match"
 msgstr "提交圖形鏈不符合"
 
-#: commit-graph.c:494
+#: commit-graph.c:549
 #, c-format
 msgid "invalid commit-graph chain: line '%s' not a hash"
 msgstr "無效的提交圖形鏈:行 '%s' 不是一個雜湊值"
 
-#: commit-graph.c:518
+#: commit-graph.c:573
 msgid "unable to find all commit-graph files"
 msgstr "無法找到所有提交圖形檔案"
 
-#: commit-graph.c:651 commit-graph.c:711
+#: commit-graph.c:706 commit-graph.c:770
 msgid "invalid commit position. commit-graph is likely corrupt"
 msgstr "無效的提交位置。提交圖形可能已損壞"
 
-#: commit-graph.c:672
+#: commit-graph.c:727
 #, c-format
 msgid "could not find commit %s"
 msgstr "無法找到提交 %s"
 
-#: commit-graph.c:948 builtin/am.c:1292
+#: commit-graph.c:1009 builtin/am.c:1292
 #, c-format
 msgid "unable to parse commit %s"
 msgstr "不能解析提交 %s"
 
-#: commit-graph.c:1096
+#: commit-graph.c:1157
 msgid "Writing changed paths Bloom filters index"
 msgstr "正在寫入變更路徑的布隆過濾器索引"
 
-#: commit-graph.c:1121
+#: commit-graph.c:1182
 msgid "Writing changed paths Bloom filters data"
 msgstr "正在寫入變更路徑的布隆過濾器索引"
 
-#: commit-graph.c:1160 builtin/pack-objects.c:2783
+#: commit-graph.c:1221 builtin/pack-objects.c:2832
 #, c-format
 msgid "unable to get type of object %s"
 msgstr "無法獲得物件 %s 類型"
 
-#: commit-graph.c:1196
+#: commit-graph.c:1257
 msgid "Loading known commits in commit graph"
 msgstr "正在載入提交圖中的已知提交"
 
-#: commit-graph.c:1213
+#: commit-graph.c:1274
 msgid "Expanding reachable commits in commit graph"
 msgstr "正在擴展提交圖中的可以取得提交"
 
-#: commit-graph.c:1233
+#: commit-graph.c:1294
 msgid "Clearing commit marks in commit graph"
 msgstr "正在清除提交圖中的提交標記"
 
-#: commit-graph.c:1252
+#: commit-graph.c:1313
 msgid "Computing commit graph generation numbers"
 msgstr "正在計算提交圖世代數字"
 
-#: commit-graph.c:1300
+#: commit-graph.c:1367
 msgid "Computing commit changed paths Bloom filters"
 msgstr "正在計算提交變更路徑的布隆過濾器"
 
-#: commit-graph.c:1359
+#: commit-graph.c:1423
+msgid "Collecting referenced commits"
+msgstr "正在收集引用提交"
+
+#: commit-graph.c:1447
 #, c-format
 msgid "Finding commits for commit graph in %d pack"
 msgid_plural "Finding commits for commit graph in %d packs"
 msgstr[0] "正在 %d 個包中尋找提交圖的提交"
 
-#: commit-graph.c:1372
+#: commit-graph.c:1460
 #, c-format
 msgid "error adding pack %s"
 msgstr "新增包 %s 發生錯誤"
 
-#: commit-graph.c:1376
+#: commit-graph.c:1464
 #, c-format
 msgid "error opening index for %s"
 msgstr "為 %s 開啟索引發生錯誤"
 
-#: commit-graph.c:1405
-#, c-format
-msgid "Finding commits for commit graph from %d ref"
-msgid_plural "Finding commits for commit graph from %d refs"
-msgstr[0] "正在從 %d 個引用中尋找提交圖的提交"
-
-#: commit-graph.c:1426
-#, c-format
-msgid "invalid commit object id: %s"
-msgstr "無效的提交物件 ID:%s"
-
-#: commit-graph.c:1442
+#: commit-graph.c:1503
 msgid "Finding commits for commit graph among packed objects"
 msgstr "正在打包物件中尋找提交圖的提交"
 
-#: commit-graph.c:1457
+#: commit-graph.c:1518
 msgid "Counting distinct commits in commit graph"
 msgstr "正在計算提交圖中不同的提交"
 
-#: commit-graph.c:1489
+#: commit-graph.c:1550
 msgid "Finding extra edges in commit graph"
 msgstr "正在尋找提交圖中額外的邊"
 
-#: commit-graph.c:1538
+#: commit-graph.c:1599
 msgid "failed to write correct number of base graph ids"
 msgstr "無法寫入正確數量的基礎圖形 ID"
 
-#: commit-graph.c:1572 midx.c:812
+#: commit-graph.c:1633 midx.c:812
 #, c-format
 msgid "unable to create leading directories of %s"
 msgstr "不能為 %s 建立先導目錄"
 
-#: commit-graph.c:1585
+#: commit-graph.c:1646
 msgid "unable to create temporary graph layer"
 msgstr "無法建立暫時的圖形層"
 
-#: commit-graph.c:1590
+#: commit-graph.c:1651
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
 msgstr "無法調整「%s」的共用權限"
 
-#: commit-graph.c:1667
+#: commit-graph.c:1728
 #, c-format
 msgid "Writing out commit graph in %d pass"
 msgid_plural "Writing out commit graph in %d passes"
 msgstr[0] "正在用 %d 步寫出提交圖"
 
-#: commit-graph.c:1712
+#: commit-graph.c:1773
 msgid "unable to open commit-graph chain file"
 msgstr "無法開啟提交圖形鏈檔案"
 
-#: commit-graph.c:1728
+#: commit-graph.c:1789
 msgid "failed to rename base commit-graph file"
 msgstr "無法重新命名基礎提交圖形檔案"
 
-#: commit-graph.c:1748
+#: commit-graph.c:1809
 msgid "failed to rename temporary commit-graph file"
 msgstr "無法重新命名暫時提交圖形檔案"
 
-#: commit-graph.c:1874
+#: commit-graph.c:1935
 msgid "Scanning merged commits"
 msgstr "正在掃描合併提交"
 
-#: commit-graph.c:1885
+#: commit-graph.c:1946
 #, c-format
 msgid "unexpected duplicate commit id %s"
 msgstr "意外的重複提交 ID %s"
 
-#: commit-graph.c:1908
+#: commit-graph.c:1969
 msgid "Merging commit-graph"
 msgstr "正在合併提交圖形"
 
-#: commit-graph.c:2096
+#: commit-graph.c:2156
 #, c-format
 msgid "the commit graph format cannot write %d commits"
 msgstr "提交圖格式不能寫入 %d 個提交"
 
-#: commit-graph.c:2107
+#: commit-graph.c:2167
 msgid "too many commits to write graph"
 msgstr "提交太多不能畫圖"
 
-#: commit-graph.c:2200
+#: commit-graph.c:2260
 msgid "the commit-graph file has incorrect checksum and is likely corrupt"
 msgstr "提交圖檔案的總和檢查碼錯誤,可能已經損壞"
 
-#: commit-graph.c:2210
+#: commit-graph.c:2270
 #, c-format
 msgid "commit-graph has incorrect OID order: %s then %s"
 msgstr "提交圖形的物件 ID 順序不正確:%s 然後 %s"
 
-#: commit-graph.c:2220 commit-graph.c:2235
+#: commit-graph.c:2280 commit-graph.c:2295
 #, c-format
 msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
 msgstr "提交圖形有不正確的扇出值:fanout[%d] = %u != %u"
 
-#: commit-graph.c:2227
+#: commit-graph.c:2287
 #, c-format
 msgid "failed to parse commit %s from commit-graph"
 msgstr "無法從提交圖形中解析提交 %s"
 
-#: commit-graph.c:2245
+#: commit-graph.c:2305
 msgid "Verifying commits in commit graph"
 msgstr "正在驗證提交圖中的提交"
 
-#: commit-graph.c:2259
+#: commit-graph.c:2320
 #, c-format
 msgid "failed to parse commit %s from object database for commit-graph"
 msgstr "無法從提交圖形的物件庫中解析提交 %s"
 
-#: commit-graph.c:2266
+#: commit-graph.c:2327
 #, c-format
 msgid "root tree OID for commit %s in commit-graph is %s != %s"
 msgstr "提交圖形中的提交 %s 的根樹狀物件 ID 是 %s != %s"
 
-#: commit-graph.c:2276
+#: commit-graph.c:2337
 #, c-format
 msgid "commit-graph parent list for commit %s is too long"
 msgstr "提交 %s 的提交圖形父提交列表太長了"
 
-#: commit-graph.c:2285
+#: commit-graph.c:2346
 #, c-format
 msgid "commit-graph parent for %s is %s != %s"
 msgstr "%s 的提交圖形父提交是 %s != %s"
 
-#: commit-graph.c:2298
+#: commit-graph.c:2360
 #, c-format
 msgid "commit-graph parent list for commit %s terminates early"
 msgstr "提交 %s 的提交圖形父提交列表過早終止"
 
-#: commit-graph.c:2303
+#: commit-graph.c:2365
 #, c-format
 msgid ""
 "commit-graph has generation number zero for commit %s, but non-zero elsewhere"
 msgstr "提交圖形中提交 %s 的世代號是零,但其它地方非零"
 
-#: commit-graph.c:2307
+#: commit-graph.c:2369
 #, c-format
 msgid ""
 "commit-graph has non-zero generation number for commit %s, but zero elsewhere"
 msgstr "提交圖形中提交 %s 的世代號非零,但其它地方是零"
 
-#: commit-graph.c:2322
+#: commit-graph.c:2385
 #, c-format
 msgid "commit-graph generation for commit %s is %u != %u"
 msgstr "提交圖形中的提交 %s 的世代號是 %u != %u"
 
-#: commit-graph.c:2328
+#: commit-graph.c:2391
 #, c-format
 msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
 msgstr "提交圖形中提交 %s 的提交日期是 %<PRIuMAX> != %<PRIuMAX>"
@@ -2547,27 +2580,27 @@
 "設定 \"git config advice.graftFileDeprecated false\"\n"
 "可關閉本消息"
 
-#: commit.c:1168
+#: commit.c:1172
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr "提交 %s 有一個非可信的聲稱來自 %s 的 GPG 簽名。"
 
-#: commit.c:1172
+#: commit.c:1176
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "提交 %s 有一個錯誤的聲稱來自 %s 的 GPG 簽名。"
 
-#: commit.c:1175
+#: commit.c:1179
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "提交 %s 沒有 GPG 簽名。"
 
-#: commit.c:1178
+#: commit.c:1182
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "提交 %s 有一個來自 %s 的好的 GPG 簽名。\n"
 
-#: commit.c:1432
+#: commit.c:1436
 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"
@@ -2755,7 +2788,7 @@
 msgid "must be one of nothing, matching, simple, upstream or current"
 msgstr "必須是其中之一:nothing、matching、simple、upstream 或 current"
 
-#: config.c:1533 builtin/pack-objects.c:3542
+#: config.c:1533 builtin/pack-objects.c:3617
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "錯誤的打包壓縮級別 %d"
@@ -2903,72 +2936,81 @@
 msgid "server doesn't support '%s'"
 msgstr "伺服器不支援 '%s'"
 
-#: connect.c:103
+#: connect.c:118
 #, c-format
 msgid "server doesn't support feature '%s'"
 msgstr "伺服器不支援特性 '%s'"
 
-#: connect.c:114
+#: connect.c:129
 msgid "expected flush after capabilities"
 msgstr "在能力之後應為一個 flush 包"
 
-#: connect.c:233
+#: connect.c:263
 #, c-format
 msgid "ignoring capabilities after first line '%s'"
 msgstr "忽略第一行 '%s' 之後的能力欄位"
 
-#: connect.c:252
+#: connect.c:284
 msgid "protocol error: unexpected capabilities^{}"
 msgstr "協定錯誤:意外的 capabilities^{}"
 
-#: connect.c:273
+#: connect.c:306
 #, c-format
 msgid "protocol error: expected shallow sha-1, got '%s'"
 msgstr "協定錯誤:預期淺複製 sha-1,卻得到 '%s'"
 
-#: connect.c:275
+#: connect.c:308
 msgid "repository on the other end cannot be shallow"
 msgstr "另一端的版本庫不能是淺複製版本庫"
 
-#: connect.c:313
+#: connect.c:347
 msgid "invalid packet"
 msgstr "無效封包"
 
-#: connect.c:333
+#: connect.c:367
 #, c-format
 msgid "protocol error: unexpected '%s'"
 msgstr "協定錯誤:意外的 '%s'"
 
-#: connect.c:441
+#: connect.c:473
+#, c-format
+msgid "unknown object format '%s' specified by server"
+msgstr "伺服器指定的「%s」物件格式無效"
+
+#: connect.c:500
 #, c-format
 msgid "invalid ls-refs response: %s"
 msgstr "無效的 ls-refs 回應:%s"
 
-#: connect.c:445
+#: connect.c:504
 msgid "expected flush after ref listing"
 msgstr "在引用列表之後應該有一個 flush 包"
 
-#: connect.c:544
+#: connect.c:507
+msgid "expected response end packet after ref listing"
+msgstr "在引用列表後預期要有回應結束封包"
+
+#: connect.c:640
 #, c-format
 msgid "protocol '%s' is not supported"
 msgstr "不支援 '%s' 協定"
 
-#: connect.c:595
+#: connect.c:691
 msgid "unable to set SO_KEEPALIVE on socket"
 msgstr "無法為 socket 設定 SO_KEEPALIVE"
 
-#: connect.c:635 connect.c:698
+#: connect.c:731 connect.c:794
 #, c-format
 msgid "Looking up %s ... "
 msgstr "尋找 %s ... "
 
-#: connect.c:639
+#: connect.c:735
 #, c-format
 msgid "unable to look up %s (port %s) (%s)"
 msgstr "無法尋找 %s(埠 %s)(%s)"
 
 #. TRANSLATORS: this is the end of "Looking up %s ... "
-#: connect.c:643 connect.c:714
+#: connect.c:739 connect.c:810
 #, c-format
 msgid ""
 "done.\n"
@@ -2977,7 +3019,7 @@
 "完成。\n"
 "連線到 %s(埠 %s)... "
 
-#: connect.c:665 connect.c:742
+#: connect.c:761 connect.c:838
 #, c-format
 msgid ""
 "unable to connect to %s:\n"
@@ -2987,73 +3029,73 @@
 "%s"
 
 #. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
-#: connect.c:671 connect.c:748
+#: connect.c:767 connect.c:844
 msgid "done."
 msgstr "完成。"
 
-#: connect.c:702
+#: connect.c:798
 #, c-format
 msgid "unable to look up %s (%s)"
 msgstr "無法尋找 %s(%s)"
 
-#: connect.c:708
+#: connect.c:804
 #, c-format
 msgid "unknown port %s"
 msgstr "未知埠 %s"
 
-#: connect.c:845 connect.c:1175
+#: connect.c:941 connect.c:1271
 #, c-format
 msgid "strange hostname '%s' blocked"
 msgstr "已阻止奇怪的主機名稱 '%s'"
 
-#: connect.c:847
+#: connect.c:943
 #, c-format
 msgid "strange port '%s' blocked"
 msgstr "已阻止奇怪的埠號 '%s'"
 
-#: connect.c:857
+#: connect.c:953
 #, c-format
 msgid "cannot start proxy %s"
 msgstr "不能啟動代理 %s"
 
-#: connect.c:928
+#: connect.c:1024
 msgid "no path specified; see 'git help pull' for valid url syntax"
 msgstr "未指定路徑,執行 'git help pull' 檢視有效的 url 語法"
 
-#: connect.c:1123
+#: connect.c:1219
 msgid "ssh variant 'simple' does not support -4"
 msgstr "ssh 變體 'simple' 不支援 -4"
 
-#: connect.c:1135
+#: connect.c:1231
 msgid "ssh variant 'simple' does not support -6"
 msgstr "ssh 變體 'simple' 不支援 -6"
 
-#: connect.c:1152
+#: connect.c:1248
 msgid "ssh variant 'simple' does not support setting port"
 msgstr "ssh 變體 'simple' 不支援設定埠"
 
-#: connect.c:1264
+#: connect.c:1360
 #, c-format
 msgid "strange pathname '%s' blocked"
 msgstr "已阻止奇怪的路徑名 '%s'"
 
-#: connect.c:1311
+#: connect.c:1407
 msgid "unable to fork"
 msgstr "無法 fork"
 
-#: connected.c:107 builtin/fsck.c:209 builtin/prune.c:45
+#: connected.c:109 builtin/fsck.c:209 builtin/prune.c:45
 msgid "Checking connectivity"
 msgstr "正在檢查連通性"
 
-#: connected.c:119
+#: connected.c:121
 msgid "Could not run 'git rev-list'"
 msgstr "不能執行 'git rev-list'"
 
-#: connected.c:139
+#: connected.c:141
 msgid "failed write to rev-list"
 msgstr "寫入 rev-list 失敗"
 
-#: connected.c:146
+#: connected.c:148
 msgid "failed to close rev-list's stdin"
 msgstr "關閉 rev-list 的標準輸入失敗"
 
@@ -3302,18 +3344,18 @@
 msgstr "不是一個 git 版本庫。使用 --no-index 比較工作區之外的兩個路徑"
 
 #  譯者:請維持前導空格
-#: diff.c:155
+#: diff.c:156
 #, c-format
 msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
 msgstr "  無法解析 dirstat 截止(cut-off)百分比 '%s'\n"
 
 #  譯者:請維持前導空格
-#: diff.c:160
+#: diff.c:161
 #, c-format
 msgid "  Unknown dirstat parameter '%s'\n"
 msgstr "  未知的 dirstat 參數 '%s'\n"
 
-#: diff.c:296
+#: diff.c:297
 msgid ""
 "color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
 "'dimmed-zebra', 'plain'"
@@ -3321,7 +3363,7 @@
 "移動的顏色設定必須是 'no'、'default'、'blocks'、'zebra'、'dimmed_zebra' 或 "
 "'plain'"
 
-#: diff.c:324
+#: diff.c:325
 #, c-format
 msgid ""
 "unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', "
@@ -3330,18 +3372,18 @@
 "未知的 color-moved-ws 模式 '%s',可能的取值有 'ignore-space-change'、'ignore-"
 "space-at-eol'、'ignore-all-space'、'allow-indentation-change'"
 
-#: diff.c:332
+#: diff.c:333
 msgid ""
 "color-moved-ws: allow-indentation-change cannot be combined with other "
 "whitespace modes"
 msgstr "color-moved-ws:allow-indentation-change 不能與其它空白字元模式共用"
 
-#: diff.c:405
+#: diff.c:410
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
 msgstr "設定變數 'diff.submodule' 未知的取值:'%s'"
 
-#: diff.c:465
+#: diff.c:470
 #, c-format
 msgid ""
 "Found errors in 'diff.dirstat' config variable:\n"
@@ -3350,35 +3392,35 @@
 "發現設定變數 'diff.dirstat' 中的錯誤:\n"
 "%s"
 
-#: diff.c:4238
+#: diff.c:4243
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "外部 diff 離開,停止在 %s"
 
-#: diff.c:4583
+#: diff.c:4589
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only、--name-status、--check 和 -s 是互斥的"
 
-#: diff.c:4586
+#: diff.c:4592
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G、-S 和 --find-object 是互斥的"
 
-#: diff.c:4664
+#: diff.c:4670
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow 明確要求只跟一個路徑規格"
 
-#: diff.c:4712
+#: diff.c:4718
 #, c-format
 msgid "invalid --stat value: %s"
 msgstr "無效的 --stat 值:%s"
 
-#: diff.c:4717 diff.c:4722 diff.c:4727 diff.c:4732 diff.c:5245
+#: diff.c:4723 diff.c:4728 diff.c:4733 diff.c:4738 diff.c:5250
 #: parse-options.c:197 parse-options.c:201
 #, c-format
 msgid "%s expects a numerical value"
 msgstr "%s 期望一個數字值"
 
-#: diff.c:4749
+#: diff.c:4755
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -3387,195 +3429,195 @@
 "無法解析 --dirstat/-X 選項的參數:\n"
 "%s"
 
-#: diff.c:4834
+#: diff.c:4840
 #, c-format
 msgid "unknown change class '%c' in --diff-filter=%s"
 msgstr "--diff-filter=%2$s 中未知的變更類 '%1$c'"
 
-#: diff.c:4858
+#: diff.c:4864
 #, c-format
 msgid "unknown value after ws-error-highlight=%.*s"
 msgstr "ws-error-highlight=%.*s 之後未知的值"
 
-#: diff.c:4872
+#: diff.c:4878
 #, c-format
 msgid "unable to resolve '%s'"
 msgstr "不能解析 '%s'"
 
-#: diff.c:4922 diff.c:4928
+#: diff.c:4928 diff.c:4934
 #, c-format
 msgid "%s expects <n>/<m> form"
 msgstr "%s 期望 <n>/<m> 格式"
 
-#: diff.c:4940
+#: diff.c:4946
 #, c-format
 msgid "%s expects a character, got '%s'"
 msgstr "%s 期望一個字元,得到 '%s'"
 
-#: diff.c:4961
+#: diff.c:4967
 #, c-format
 msgid "bad --color-moved argument: %s"
 msgstr "壞的 --color-moved 參數:%s"
 
-#: diff.c:4980
+#: diff.c:4986
 #, c-format
 msgid "invalid mode '%s' in --color-moved-ws"
 msgstr "--color-moved-ws 中的無效模式 '%s'"
 
-#: diff.c:5020
+#: diff.c:5026
 msgid ""
 "option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
 "\"histogram\""
 msgstr ""
 "diff-algorithm 選項有 \"myers\"、\"minimal\"、\"patience\" 和 \"histogram\""
 
-#: diff.c:5056 diff.c:5076
+#: diff.c:5062 diff.c:5082
 #, c-format
 msgid "invalid argument to %s"
 msgstr "%s 的參數無效"
 
-#: diff.c:5214
+#: diff.c:5219
 #, c-format
 msgid "failed to parse --submodule option parameter: '%s'"
 msgstr "無法解析 --submodule 選項的參數:'%s'"
 
-#: diff.c:5270
+#: diff.c:5275
 #, c-format
 msgid "bad --word-diff argument: %s"
 msgstr "壞的 --word-diff 參數:%s"
 
-#: diff.c:5293
+#: diff.c:5298
 msgid "Diff output format options"
 msgstr "差異輸出格式化選項"
 
-#: diff.c:5295 diff.c:5301
+#: diff.c:5300 diff.c:5306
 msgid "generate patch"
 msgstr "生成修補檔"
 
-#: diff.c:5298 builtin/log.c:177
+#: diff.c:5303 builtin/log.c:177
 msgid "suppress diff output"
 msgstr "不顯示差異輸出"
 
-#: diff.c:5303 diff.c:5417 diff.c:5424
+#: diff.c:5308 diff.c:5422 diff.c:5429
 msgid "<n>"
 msgstr "<n>"
 
-#: diff.c:5304 diff.c:5307
+#: diff.c:5309 diff.c:5312
 msgid "generate diffs with <n> lines context"
 msgstr "生成含 <n> 行上下文的差異"
 
-#: diff.c:5309
+#: diff.c:5314
 msgid "generate the diff in raw format"
 msgstr "生成原始格式的差異"
 
-#: diff.c:5312
+#: diff.c:5317
 msgid "synonym for '-p --raw'"
 msgstr "和 '-p --raw' 同義"
 
-#: diff.c:5316
+#: diff.c:5321
 msgid "synonym for '-p --stat'"
 msgstr "和 '-p --stat' 同義"
 
-#: diff.c:5320
+#: diff.c:5325
 msgid "machine friendly --stat"
 msgstr "機器友好的 --stat"
 
-#: diff.c:5323
+#: diff.c:5328
 msgid "output only the last line of --stat"
 msgstr "只輸出 --stat 的最後一行"
 
-#: diff.c:5325 diff.c:5333
+#: diff.c:5330 diff.c:5338
 msgid "<param1,param2>..."
 msgstr "<參數1,參數2>..."
 
-#: diff.c:5326
+#: diff.c:5331
 msgid ""
 "output the distribution of relative amount of changes for each sub-directory"
 msgstr "輸出每個子目錄相對變更的分布"
 
-#: diff.c:5330
+#: diff.c:5335
 msgid "synonym for --dirstat=cumulative"
 msgstr "和 --dirstat=cumulative 同義"
 
-#: diff.c:5334
+#: diff.c:5339
 msgid "synonym for --dirstat=files,param1,param2..."
 msgstr "是 --dirstat=files,param1,param2... 的同義詞"
 
-#: diff.c:5338
+#: diff.c:5343
 msgid "warn if changes introduce conflict markers or whitespace errors"
 msgstr "如果變更中引入衝突定界符或空白錯誤,給出警告"
 
-#: diff.c:5341
+#: diff.c:5346
 msgid "condensed summary such as creations, renames and mode changes"
 msgstr "精簡摘要,例如建立、重新命名和模式變更"
 
-#: diff.c:5344
+#: diff.c:5349
 msgid "show only names of changed files"
 msgstr "只顯示變更檔案的檔案名"
 
-#: diff.c:5347
+#: diff.c:5352
 msgid "show only names and status of changed files"
 msgstr "只顯示變更檔案的檔案名和狀態"
 
-#: diff.c:5349
+#: diff.c:5354
 msgid "<width>[,<name-width>[,<count>]]"
 msgstr "<寬度>[,<檔案名寬度>[,<次數>]]"
 
-#: diff.c:5350
+#: diff.c:5355
 msgid "generate diffstat"
 msgstr "生成差異統計(diffstat)"
 
-#: diff.c:5352 diff.c:5355 diff.c:5358
+#: diff.c:5357 diff.c:5360 diff.c:5363
 msgid "<width>"
 msgstr "<寬度>"
 
-#: diff.c:5353
+#: diff.c:5358
 msgid "generate diffstat with a given width"
 msgstr "使用提供的長度生成差異統計"
 
-#: diff.c:5356
+#: diff.c:5361
 msgid "generate diffstat with a given name width"
 msgstr "使用提供的檔案名長度生成差異統計"
 
-#: diff.c:5359
+#: diff.c:5364
 msgid "generate diffstat with a given graph width"
 msgstr "使用提供的圖形長度生成差異統計"
 
-#: diff.c:5361
+#: diff.c:5366
 msgid "<count>"
 msgstr "<次數>"
 
-#: diff.c:5362
+#: diff.c:5367
 msgid "generate diffstat with limited lines"
 msgstr "生成有限行數的差異統計"
 
-#: diff.c:5365
+#: diff.c:5370
 msgid "generate compact summary in diffstat"
 msgstr "生成差異統計的簡潔摘要"
 
-#: diff.c:5368
+#: diff.c:5373
 msgid "output a binary diff that can be applied"
 msgstr "輸出一個可以應用的二進位差異"
 
-#: diff.c:5371
+#: diff.c:5376
 msgid "show full pre- and post-image object names on the \"index\" lines"
 msgstr "在 \"index\" 行顯示完整的前後物件名稱"
 
-#: diff.c:5373
+#: diff.c:5378
 msgid "show colored diff"
 msgstr "顯示帶顏色的差異"
 
-#: diff.c:5374
+#: diff.c:5379
 msgid "<kind>"
 msgstr "<類型>"
 
-#: diff.c:5375
+#: diff.c:5380
 msgid ""
 "highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
 "diff"
 msgstr "對於差異中的上下文、舊的和新的行,加亮顯示錯誤的空白字元"
 
-#: diff.c:5378
+#: diff.c:5383
 msgid ""
 "do not munge pathnames and use NULs as output field terminators in --raw or "
 "--numstat"
@@ -3583,295 +3625,295 @@
 "在 --raw 或者 --numstat 中,不對路徑字元轉檔並使用 NUL 字元做為輸出欄位的分隔"
 "符"
 
-#: diff.c:5381 diff.c:5384 diff.c:5387 diff.c:5493
+#: diff.c:5386 diff.c:5389 diff.c:5392 diff.c:5498
 msgid "<prefix>"
 msgstr "<前綴>"
 
-#: diff.c:5382
+#: diff.c:5387
 msgid "show the given source prefix instead of \"a/\""
 msgstr "顯示提供的源前綴取代 \"a/\""
 
-#: diff.c:5385
+#: diff.c:5390
 msgid "show the given destination prefix instead of \"b/\""
 msgstr "顯示提供的目標前綴取代 \"b/\""
 
-#: diff.c:5388
+#: diff.c:5393
 msgid "prepend an additional prefix to every line of output"
 msgstr "輸出的每一行附加前綴"
 
-#: diff.c:5391
+#: diff.c:5396
 msgid "do not show any source or destination prefix"
 msgstr "不顯示任何源和目標前綴"
 
-#: diff.c:5394
+#: diff.c:5399
 msgid "show context between diff hunks up to the specified number of lines"
 msgstr "顯示指定行數的差異區塊間的上下文"
 
-#: diff.c:5398 diff.c:5403 diff.c:5408
+#: diff.c:5403 diff.c:5408 diff.c:5413
 msgid "<char>"
 msgstr "<字元>"
 
-#: diff.c:5399
+#: diff.c:5404
 msgid "specify the character to indicate a new line instead of '+'"
 msgstr "指定一個字元取代 '+' 來表示新的一行"
 
-#: diff.c:5404
+#: diff.c:5409
 msgid "specify the character to indicate an old line instead of '-'"
 msgstr "指定一個字元取代 '-' 來表示舊的一行"
 
-#: diff.c:5409
+#: diff.c:5414
 msgid "specify the character to indicate a context instead of ' '"
 msgstr "指定一個字元取代 ' ' 來表示一行上下文"
 
-#: diff.c:5412
+#: diff.c:5417
 msgid "Diff rename options"
 msgstr "差異重新命名選項"
 
-#: diff.c:5413
+#: diff.c:5418
 msgid "<n>[/<m>]"
 msgstr "<n>[/<m>]"
 
-#: diff.c:5414
+#: diff.c:5419
 msgid "break complete rewrite changes into pairs of delete and create"
 msgstr "將完全重寫的變更打破為成對的刪除和建立"
 
-#: diff.c:5418
+#: diff.c:5423
 msgid "detect renames"
 msgstr "檢測重新命名"
 
-#: diff.c:5422
+#: diff.c:5427
 msgid "omit the preimage for deletes"
-msgstr "省略刪除動作的差異輸出"
+msgstr "省略刪除變更的差異輸出"
 
-#: diff.c:5425
+#: diff.c:5430
 msgid "detect copies"
 msgstr "檢測複製"
 
-#: diff.c:5429
+#: diff.c:5434
 msgid "use unmodified files as source to find copies"
 msgstr "使用未修改的檔案做為發現複製的源"
 
-#: diff.c:5431
+#: diff.c:5436
 msgid "disable rename detection"
 msgstr "停用重新命名偵測"
 
-#: diff.c:5434
+#: diff.c:5439
 msgid "use empty blobs as rename source"
 msgstr "使用空的資料物件做為重新命名的源"
 
-#: diff.c:5436
+#: diff.c:5441
 msgid "continue listing the history of a file beyond renames"
 msgstr "繼續列出檔案重新命名以外的歷史記錄"
 
-#: diff.c:5439
+#: diff.c:5444
 msgid ""
 "prevent rename/copy detection if the number of rename/copy targets exceeds "
 "given limit"
 msgstr "如果重新命名/複製目標超過提供的限制,禁止重新命名/複製檢測"
 
-#: diff.c:5441
+#: diff.c:5446
 msgid "Diff algorithm options"
 msgstr "差異演算法選項"
 
-#: diff.c:5443
+#: diff.c:5448
 msgid "produce the smallest possible diff"
 msgstr "生成儘可能小的差異"
 
-#: diff.c:5446
+#: diff.c:5451
 msgid "ignore whitespace when comparing lines"
 msgstr "行比較時忽略空白字元"
 
-#: diff.c:5449
+#: diff.c:5454
 msgid "ignore changes in amount of whitespace"
 msgstr "忽略空白字元的變更"
 
-#: diff.c:5452
+#: diff.c:5457
 msgid "ignore changes in whitespace at EOL"
 msgstr "忽略行尾的空白字元變更"
 
-#: diff.c:5455
+#: diff.c:5460
 msgid "ignore carrier-return at the end of line"
 msgstr "忽略行尾的Enter符(CR)"
 
-#: diff.c:5458
+#: diff.c:5463
 msgid "ignore changes whose lines are all blank"
 msgstr "忽略整行都是空白的變更"
 
-#: diff.c:5461
+#: diff.c:5466
 msgid "heuristic to shift diff hunk boundaries for easy reading"
 msgstr "啟發式轉換差異邊界以便閱讀"
 
-#: diff.c:5464
+#: diff.c:5469
 msgid "generate diff using the \"patience diff\" algorithm"
 msgstr "使用 \"patience diff\" 演算法生成差異"
 
-#: diff.c:5468
+#: diff.c:5473
 msgid "generate diff using the \"histogram diff\" algorithm"
 msgstr "使用 \"histogram diff\" 演算法生成差異"
 
-#: diff.c:5470
+#: diff.c:5475
 msgid "<algorithm>"
 msgstr "<演算法>"
 
-#: diff.c:5471
+#: diff.c:5476
 msgid "choose a diff algorithm"
 msgstr "選擇一個差異演算法"
 
-#: diff.c:5473
+#: diff.c:5478
 msgid "<text>"
 msgstr "<文字>"
 
-#: diff.c:5474
+#: diff.c:5479
 msgid "generate diff using the \"anchored diff\" algorithm"
 msgstr "使用 \"anchored diff\" 演算法生成差異"
 
-#: diff.c:5476 diff.c:5485 diff.c:5488
+#: diff.c:5481 diff.c:5490 diff.c:5493
 msgid "<mode>"
 msgstr "<模式>"
 
-#: diff.c:5477
+#: diff.c:5482
 msgid "show word diff, using <mode> to delimit changed words"
 msgstr "顯示單詞差異,使用 <模式> 分隔變更的單詞"
 
-#: diff.c:5479 diff.c:5482 diff.c:5527
+#: diff.c:5484 diff.c:5487 diff.c:5532
 msgid "<regex>"
 msgstr "<正則>"
 
-#: diff.c:5480
+#: diff.c:5485
 msgid "use <regex> to decide what a word is"
 msgstr "使用 <正規表示式> 確定何為一個詞"
 
-#: diff.c:5483
+#: diff.c:5488
 msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
 msgstr "相當於 --word-diff=color --word-diff-regex=<正則>"
 
-#: diff.c:5486
+#: diff.c:5491
 msgid "moved lines of code are colored differently"
 msgstr "移動的程式碼行用不同方式著色"
 
-#: diff.c:5489
+#: diff.c:5494
 msgid "how white spaces are ignored in --color-moved"
 msgstr "在 --color-moved 下如何忽略空白字元"
 
-#: diff.c:5492
+#: diff.c:5497
 msgid "Other diff options"
 msgstr "其它差異選項"
 
-#: diff.c:5494
+#: diff.c:5499
 msgid "when run from subdir, exclude changes outside and show relative paths"
 msgstr "當從子目錄執行,排除目錄之外的變更並顯示相對路徑"
 
-#: diff.c:5498
+#: diff.c:5503
 msgid "treat all files as text"
 msgstr "把所有檔案當做文字處理"
 
-#: diff.c:5500
+#: diff.c:5505
 msgid "swap two inputs, reverse the diff"
 msgstr "交換兩個輸入,反轉差異"
 
-#: diff.c:5502
+#: diff.c:5507
 msgid "exit with 1 if there were differences, 0 otherwise"
 msgstr "有差異時離開碼為 1,否則為 0"
 
-#: diff.c:5504
+#: diff.c:5509
 msgid "disable all output of the program"
 msgstr "停用本程式的所有輸出"
 
-#: diff.c:5506
+#: diff.c:5511
 msgid "allow an external diff helper to be executed"
 msgstr "允許執行一個外部的差異助手"
 
-#: diff.c:5508
+#: diff.c:5513
 msgid "run external text conversion filters when comparing binary files"
 msgstr "當比較二進位檔案時,執行外部的文字轉換過濾器"
 
-#: diff.c:5510
+#: diff.c:5515
 msgid "<when>"
 msgstr "<何時>"
 
-#: diff.c:5511
+#: diff.c:5516
 msgid "ignore changes to submodules in the diff generation"
 msgstr "在生成差異時,忽略子模組的更改"
 
-#: diff.c:5514
+#: diff.c:5519
 msgid "<format>"
 msgstr "<格式>"
 
-#: diff.c:5515
+#: diff.c:5520
 msgid "specify how differences in submodules are shown"
 msgstr "指定子模組的差異如何顯示"
 
-#: diff.c:5519
+#: diff.c:5524
 msgid "hide 'git add -N' entries from the index"
 msgstr "隱藏索引中 'git add -N' 條目"
 
-#: diff.c:5522
+#: diff.c:5527
 msgid "treat 'git add -N' entries as real in the index"
 msgstr "將索引中 'git add -N' 條目當做真實的"
 
-#: diff.c:5524
+#: diff.c:5529
 msgid "<string>"
 msgstr "<字串>"
 
-#: diff.c:5525
+#: diff.c:5530
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "string"
 msgstr "尋找改變了指定字串出現次數的差異"
 
-#: diff.c:5528
+#: diff.c:5533
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "regex"
 msgstr "尋找改變指定正則符合出現次數的差異"
 
-#: diff.c:5531
+#: diff.c:5536
 msgid "show all changes in the changeset with -S or -G"
 msgstr "顯示使用 -S 或 -G 的變更集的所有變更"
 
-#: diff.c:5534
+#: diff.c:5539
 msgid "treat <string> in -S as extended POSIX regular expression"
 msgstr "將 -S 的 <string> 當做擴展的 POSIX 正規表示式"
 
-#: diff.c:5537
+#: diff.c:5542
 msgid "control the order in which files appear in the output"
 msgstr "控制輸出中的檔案顯示順序"
 
-#: diff.c:5538
+#: diff.c:5543
 msgid "<object-id>"
 msgstr "<物件 ID>"
 
-#: diff.c:5539
+#: diff.c:5544
 msgid ""
 "look for differences that change the number of occurrences of the specified "
 "object"
 msgstr "尋找改變指定物件出現次數的差異"
 
-#: diff.c:5541
+#: diff.c:5546
 msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
 msgstr "[(A|C|D|M|R|T|U|X|B)...[*]]"
 
-#: diff.c:5542
+#: diff.c:5547
 msgid "select files by diff type"
 msgstr "透過差異類型選擇檔案"
 
-#: diff.c:5544
+#: diff.c:5549
 msgid "<file>"
 msgstr "<檔案>"
 
-#: diff.c:5545
+#: diff.c:5550
 msgid "Output to a specific file"
 msgstr "輸出到一個指定的檔案"
 
-#: diff.c:6200
+#: diff.c:6205
 msgid "inexact rename detection was skipped due to too many files."
 msgstr "因為檔案太多,略過不嚴格的重新命名檢查。"
 
-#: diff.c:6203
+#: diff.c:6208
 msgid "only found copies from modified paths due to too many files."
 msgstr "因為檔案太多,只在修改的路徑中尋找複製。"
 
-#: diff.c:6206
+#: diff.c:6211
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -3886,59 +3928,59 @@
 msgid "Performing inexact rename detection"
 msgstr "正在進行非精確的重新命名偵測"
 
-#: dir.c:555
+#: dir.c:573
 #, c-format
 msgid "pathspec '%s' did not match any file(s) known to git"
 msgstr "路徑規格 '%s' 未符合任何 git 已知檔案"
 
-#: dir.c:695 dir.c:724 dir.c:737
+#: dir.c:713 dir.c:742 dir.c:755
 #, c-format
 msgid "unrecognized pattern: '%s'"
 msgstr "無法識別樣式:「%s」"
 
-#: dir.c:754 dir.c:768
+#: dir.c:772 dir.c:786
 #, c-format
 msgid "unrecognized negative pattern: '%s'"
 msgstr "無法識別反向模式:「%s」"
 
-#: dir.c:786
+#: dir.c:804
 #, c-format
 msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
 msgstr "您的稀疏檢出檔案可能有問題:「%s」樣式重複"
 
-#: dir.c:796
+#: dir.c:814
 msgid "disabling cone pattern matching"
 msgstr "停用 cone 樣式符合模式"
 
-#: dir.c:1173
+#: dir.c:1191
 #, c-format
 msgid "cannot use %s as an exclude file"
 msgstr "不能將 %s 用作排除檔案"
 
-#: dir.c:2275
+#: dir.c:2296
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "不能開啟目錄 '%s'"
 
-#: dir.c:2575
+#: dir.c:2596
 msgid "failed to get kernel name and information"
 msgstr "無法獲得核心名稱和訊息"
 
-#: dir.c:2699
+#: dir.c:2720
 msgid "untracked cache is disabled on this system or location"
 msgstr "快取未追蹤檔案在本系統或位置中被停用"
 
-#: dir.c:3481
+#: dir.c:3502
 #, c-format
 msgid "index file corrupt in repo %s"
 msgstr "版本庫 %s 中的索引檔案損壞"
 
-#: dir.c:3526 dir.c:3531
+#: dir.c:3547 dir.c:3552
 #, c-format
 msgid "could not create directories for %s"
 msgstr "不能為 %s 建立目錄"
 
-#: dir.c:3560
+#: dir.c:3581
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "不能從 '%s' 遷移 git 目錄到 '%s'"
@@ -3948,11 +3990,11 @@
 msgid "hint: Waiting for your editor to close the file...%c"
 msgstr "提示:等待您的編輯器關閉檔案...%c"
 
-#: entry.c:178
+#: entry.c:177
 msgid "Filtering content"
 msgstr "過濾內容"
 
-#: entry.c:479
+#: entry.c:478
 #, c-format
 msgid "could not stat file '%s'"
 msgstr "不能對檔案 '%s' 呼叫 stat"
@@ -3972,227 +4014,245 @@
 msgid "too many args to run %s"
 msgstr "執行 %s 的參數太多"
 
-#: fetch-pack.c:151
+#: fetch-pack.c:152
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack:應為 shallow 列表"
 
-#: fetch-pack.c:154
+#: fetch-pack.c:155
 msgid "git fetch-pack: expected a flush packet after shallow list"
 msgstr "git fetch-pack:在淺複製列表之後期望一個 flush 包"
 
-#: fetch-pack.c:165
+#: fetch-pack.c:166
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack:期望 ACK/NAK,卻得到 flush 包"
 
-#: fetch-pack.c:185
+#: fetch-pack.c:186
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack:應為 ACK/NAK,卻得到 '%s'"
 
-#: fetch-pack.c:196
+#: fetch-pack.c:197
 msgid "unable to write to remote"
 msgstr "無法寫到遠端"
 
-#: fetch-pack.c:258
+#: fetch-pack.c:259
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc 需要 multi_ack_detailed"
 
-#: fetch-pack.c:357 fetch-pack.c:1364
+#: fetch-pack.c:358 fetch-pack.c:1408
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "無效的 shallow 訊息:%s"
 
-#: fetch-pack.c:363 fetch-pack.c:1370
+#: fetch-pack.c:364 fetch-pack.c:1414
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "無效的 unshallow 訊息:%s"
 
-#: fetch-pack.c:365 fetch-pack.c:1372
+#: fetch-pack.c:366 fetch-pack.c:1416
 #, c-format
 msgid "object not found: %s"
 msgstr "物件未找到:%s"
 
-#: fetch-pack.c:368 fetch-pack.c:1375
+#: fetch-pack.c:369 fetch-pack.c:1419
 #, c-format
 msgid "error in object: %s"
 msgstr "物件中發生錯誤:%s"
 
-#: fetch-pack.c:370 fetch-pack.c:1377
+#: fetch-pack.c:371 fetch-pack.c:1421
 #, c-format
 msgid "no shallow found: %s"
 msgstr "未發現 shallow:%s"
 
-#: fetch-pack.c:373 fetch-pack.c:1381
+#: fetch-pack.c:374 fetch-pack.c:1425
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "應為 shallow/unshallow,卻得到 %s"
 
-#: fetch-pack.c:415
+#: fetch-pack.c:416
 #, c-format
 msgid "got %s %d %s"
 msgstr "得到 %s %d %s"
 
-#: fetch-pack.c:432
+#: fetch-pack.c:433
 #, c-format
 msgid "invalid commit %s"
 msgstr "無效提交 %s"
 
-#: fetch-pack.c:463
+#: fetch-pack.c:464
 msgid "giving up"
 msgstr "放棄"
 
-#: fetch-pack.c:476 progress.c:336
+#: fetch-pack.c:477 progress.c:336
 msgid "done"
 msgstr "完成"
 
-#: fetch-pack.c:488
+#: fetch-pack.c:489
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "得到 %s (%d) %s"
 
-#: fetch-pack.c:534
+#: fetch-pack.c:535
 #, c-format
 msgid "Marking %s as complete"
 msgstr "標記 %s 為完成"
 
-#: fetch-pack.c:755
+#: fetch-pack.c:756
 #, c-format
 msgid "already have %s (%s)"
 msgstr "已經有 %s(%s)"
 
-#: fetch-pack.c:819
+#: fetch-pack.c:821
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack:無法衍生 sideband 多路輸出"
 
-#: fetch-pack.c:827
+#: fetch-pack.c:829
 msgid "protocol error: bad pack header"
 msgstr "協定錯誤:壞的包頭"
 
-#: fetch-pack.c:901
+#: fetch-pack.c:910
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack:無法衍生進程 %s"
 
-#: fetch-pack.c:917
+#: fetch-pack.c:927
 #, c-format
 msgid "%s failed"
 msgstr "%s 失敗"
 
-#: fetch-pack.c:919
+#: fetch-pack.c:929
 msgid "error in sideband demultiplexer"
 msgstr "sideband 多路輸出發生錯誤"
 
-#: fetch-pack.c:966
+#: fetch-pack.c:976
 #, c-format
 msgid "Server version is %.*s"
 msgstr "伺服器版本 %.*s"
 
-#: fetch-pack.c:971 fetch-pack.c:977 fetch-pack.c:980 fetch-pack.c:986
-#: fetch-pack.c:990 fetch-pack.c:994 fetch-pack.c:998 fetch-pack.c:1002
-#: fetch-pack.c:1006 fetch-pack.c:1010 fetch-pack.c:1014 fetch-pack.c:1018
-#: fetch-pack.c:1024 fetch-pack.c:1030 fetch-pack.c:1035 fetch-pack.c:1040
+#: fetch-pack.c:981 fetch-pack.c:987 fetch-pack.c:990 fetch-pack.c:996
+#: fetch-pack.c:1000 fetch-pack.c:1004 fetch-pack.c:1008 fetch-pack.c:1012
+#: fetch-pack.c:1016 fetch-pack.c:1020 fetch-pack.c:1024 fetch-pack.c:1028
+#: fetch-pack.c:1034 fetch-pack.c:1040 fetch-pack.c:1045 fetch-pack.c:1050
 #, c-format
 msgid "Server supports %s"
 msgstr "伺服器支援 %s"
 
-#: fetch-pack.c:973
+#: fetch-pack.c:983
 msgid "Server does not support shallow clients"
 msgstr "伺服器不支援 shalllow 用戶端"
 
-#: fetch-pack.c:1033
+#: fetch-pack.c:1043
 msgid "Server does not support --shallow-since"
 msgstr "伺服器不支援 --shallow-since"
 
-#: fetch-pack.c:1038
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-exclude"
 msgstr "伺服器不支援 --shallow-exclude"
 
-#: fetch-pack.c:1042
+#: fetch-pack.c:1052
 msgid "Server does not support --deepen"
 msgstr "伺服器不支援 --deepen"
 
-#: fetch-pack.c:1059
+#: fetch-pack.c:1054
+msgid "Server does not support this repository's object format"
+msgstr "伺服器不支援此版本庫的物件格式"
+
+#: fetch-pack.c:1071
 msgid "no common commits"
 msgstr "沒有共同的提交"
 
-#: fetch-pack.c:1071 fetch-pack.c:1563
+#: fetch-pack.c:1083 fetch-pack.c:1639
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack:取得失敗。"
 
 #: fetch-pack.c:1211
+#, c-format
+msgid "mismatched algorithms: client %s; server %s"
+msgstr "算法不一致:用戶端 %s;伺服器 %s"
+
+#: fetch-pack.c:1215
+#, c-format
+msgid "the server does not support algorithm '%s'"
+msgstr "伺服器不支援「%s」算法"
+
+#: fetch-pack.c:1235
 msgid "Server does not support shallow requests"
 msgstr "伺服器不支援 shalllow 請求"
 
-#: fetch-pack.c:1218
+#: fetch-pack.c:1242
 msgid "Server supports filter"
 msgstr "伺服器支援 filter"
 
-#: fetch-pack.c:1242
+#: fetch-pack.c:1286
 msgid "unable to write request to remote"
 msgstr "無法將請求寫到遠端"
 
-#: fetch-pack.c:1260
+#: fetch-pack.c:1304
 #, c-format
 msgid "error reading section header '%s'"
 msgstr "讀取節標題 '%s' 發生錯誤"
 
-#: fetch-pack.c:1266
+#: fetch-pack.c:1310
 #, c-format
 msgid "expected '%s', received '%s'"
 msgstr "預期 '%s',得到 '%s'"
 
-#: fetch-pack.c:1327
+#: fetch-pack.c:1371
 #, c-format
 msgid "unexpected acknowledgment line: '%s'"
 msgstr "意外的確認行:'%s'"
 
-#: fetch-pack.c:1332
+#: fetch-pack.c:1376
 #, c-format
 msgid "error processing acks: %d"
 msgstr "處理 ack 發生錯誤:%d"
 
-#: fetch-pack.c:1342
+#: fetch-pack.c:1386
 msgid "expected packfile to be sent after 'ready'"
 msgstr "預期在 'ready' 之後傳送 packfile"
 
-#: fetch-pack.c:1344
+#: fetch-pack.c:1388
 msgid "expected no other sections to be sent after no 'ready'"
 msgstr "在沒有 'ready' 不應該傳送其它小節"
 
-#: fetch-pack.c:1386
+#: fetch-pack.c:1430
 #, c-format
 msgid "error processing shallow info: %d"
 msgstr "處理淺複製訊息發生錯誤:%d"
 
-#: fetch-pack.c:1433
+#: fetch-pack.c:1477
 #, c-format
 msgid "expected wanted-ref, got '%s'"
 msgstr "預期 wanted-ref,得到 '%s'"
 
-#: fetch-pack.c:1438
+#: fetch-pack.c:1482
 #, c-format
 msgid "unexpected wanted-ref: '%s'"
 msgstr "意外的 wanted-ref:'%s'"
 
-#: fetch-pack.c:1443
+#: fetch-pack.c:1487
 #, c-format
 msgid "error processing wanted refs: %d"
 msgstr "處理要取得的引用發生錯誤:%d"
 
-#: fetch-pack.c:1789
+#: fetch-pack.c:1517
+msgid "git fetch-pack: expected response end packet"
+msgstr "git fetch-pack: 預期要有回應結束封包"
+
+#: fetch-pack.c:1921
 msgid "no matching remote head"
 msgstr "沒有符合的遠端分支"
 
-#: fetch-pack.c:1812 builtin/clone.c:692
+#: fetch-pack.c:1944 builtin/clone.c:692
 msgid "remote did not send all necessary objects"
 msgstr "遠端沒有傳送所有必需的物件"
 
-#: fetch-pack.c:1839
+#: fetch-pack.c:1971
 #, c-format
 msgid "no such remote ref %s"
 msgstr "沒有這樣的遠端引用 %s"
 
-#: fetch-pack.c:1842
+#: fetch-pack.c:1974
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "伺服器不允許請求未公開的物件 %s"
@@ -4228,7 +4288,7 @@
 msgid "'%s': unable to read %s"
 msgstr "'%s':無法讀取 %s"
 
-#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:82
+#: grep.c:2145 setup.c:176 builtin/clone.c:411 builtin/diff.c:89
 #: builtin/rm.c:135
 #, c-format
 msgid "failed to stat '%s'"
@@ -4369,16 +4429,16 @@
 "\n"
 "最類似的指令有"
 
-#: help.c:653
+#: help.c:654
 msgid "git version [<options>]"
 msgstr "git version [<選項>]"
 
-#: help.c:708
+#: help.c:709
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s:%s - %s"
 
-#: help.c:712
+#: help.c:713
 msgid ""
 "\n"
 "Did you mean this?"
@@ -4473,6 +4533,10 @@
 msgid "multiple filter-specs cannot be combined"
 msgstr "不能混用多種過濾規格"
 
+#: list-objects-filter-options.c:330
+msgid "unable to upgrade repository format to support partial clone"
+msgstr "無法升級版本庫格式,以致不支援部分複製"
+
 #: list-objects-filter.c:492
 #, c-format
 msgid "unable to access sparse blob in '%s'"
@@ -4827,7 +4891,7 @@
 msgid "Skipped %s (merged same as existing)"
 msgstr "略過 %s(已經做過相同合併)"
 
-#: merge-recursive.c:3101 git-submodule.sh:985
+#: merge-recursive.c:3101 git-submodule.sh:959
 msgid "submodule"
 msgstr "子模組"
 
@@ -4950,7 +5014,7 @@
 msgstr "讀取快取失敗"
 
 #: merge.c:108 rerere.c:720 builtin/am.c:1878 builtin/am.c:1912
-#: builtin/checkout.c:559 builtin/checkout.c:824 builtin/clone.c:816
+#: builtin/checkout.c:559 builtin/checkout.c:822 builtin/clone.c:816
 #: builtin/stash.c:265
 msgid "unable to write new index file"
 msgstr "無法寫新的索引檔案"
@@ -5195,21 +5259,21 @@
 msgid "hash mismatch %s"
 msgstr "雜湊值與 %s 不符合"
 
-#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2135
+#: pack-bitmap.c:815 pack-bitmap.c:821 builtin/pack-objects.c:2184
 #, c-format
 msgid "unable to get size of %s"
 msgstr "不能得到 %s 的大小"
 
-#: packfile.c:629
+#: packfile.c:630
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "位移量在 packfile 結束之前(損壞的 .idx?)"
 
-#: packfile.c:1899
+#: packfile.c:1900
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "位移量在 %s 的包索引開始之前(損壞的索引?)"
 
-#: packfile.c:1903
+#: packfile.c:1904
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "位移量越過了 %s 的包索引的結尾(被截斷的索引?)"
@@ -5411,44 +5475,48 @@
 msgstr "無法寫 delim 包"
 
 #: pkt-line.c:106
+msgid "unable to write stateless separator packet"
+msgstr "無法寫入無狀態的分隔符號封包"
+
+#: pkt-line.c:113
 msgid "flush packet write failed"
 msgstr "flush 包寫錯誤"
 
-#: pkt-line.c:146 pkt-line.c:232
+#: pkt-line.c:153 pkt-line.c:239
 msgid "protocol error: impossibly long line"
 msgstr "協定錯誤:不可能的長行"
 
-#: pkt-line.c:162 pkt-line.c:164
+#: pkt-line.c:169 pkt-line.c:171
 msgid "packet write with format failed"
 msgstr "格式化包寫入錯誤"
 
-#: pkt-line.c:196
+#: pkt-line.c:203
 msgid "packet write failed - data exceeds max packet size"
 msgstr "寫封包失敗:資料超過了包的最大長度"
 
-#: pkt-line.c:203 pkt-line.c:210
+#: pkt-line.c:210 pkt-line.c:217
 msgid "packet write failed"
 msgstr "封包寫入失敗"
 
-#: pkt-line.c:295
+#: pkt-line.c:302
 msgid "read error"
 msgstr "讀取錯誤"
 
-#: pkt-line.c:303
+#: pkt-line.c:310
 msgid "the remote end hung up unexpectedly"
 msgstr "遠端意外掛斷了"
 
-#: pkt-line.c:331
+#: pkt-line.c:338
 #, c-format
 msgid "protocol error: bad line length character: %.4s"
 msgstr "協定錯誤:錯誤的行長度字串:%.4s"
 
-#: pkt-line.c:341 pkt-line.c:346
+#: pkt-line.c:352 pkt-line.c:357
 #, c-format
 msgid "protocol error: bad line length %d"
 msgstr "協定錯誤:錯誤的行長度 %d"
 
-#: pkt-line.c:362
+#: pkt-line.c:373
 #, c-format
 msgid "remote error: %s"
 msgstr "遠端錯誤:%s"
@@ -5625,7 +5693,7 @@
 
 #: read-cache.c:1983 read-cache.c:2271 rerere.c:565 rerere.c:599 rerere.c:1111
 #: submodule.c:1619 builtin/add.c:532 builtin/check-ignore.c:181
-#: builtin/checkout.c:488 builtin/checkout.c:676 builtin/clean.c:961
+#: builtin/checkout.c:488 builtin/checkout.c:674 builtin/clean.c:991
 #: builtin/commit.c:364 builtin/diff-tree.c:121 builtin/grep.c:507
 #: builtin/mv.c:145 builtin/reset.c:247 builtin/rm.c:290
 #: builtin/submodule--helper.c:332
@@ -5682,7 +5750,7 @@
 msgid "broken index, expect %s in %s, got %s"
 msgstr "損壞的索引,期望在 %2$s 中的 %1$s,得到 %3$s"
 
-#: read-cache.c:3026 strbuf.c:1176 wrapper.c:622 builtin/merge.c:1130
+#: read-cache.c:3026 strbuf.c:1171 wrapper.c:630 builtin/merge.c:1130
 #, c-format
 msgid "could not close '%s'"
 msgstr "不能關閉 '%s'"
@@ -5857,7 +5925,7 @@
 msgid "could not read '%s'."
 msgstr "不能讀取 '%s'。"
 
-#: ref-filter.c:42 wt-status.c:1936
+#: ref-filter.c:42 wt-status.c:1977
 msgid "gone"
 msgstr "遺失"
 
@@ -6081,7 +6149,7 @@
 msgid "ignoring ref with broken name %s"
 msgstr "忽略帶有錯誤名稱 %s 的引用"
 
-#: ref-filter.c:2095 refs.c:625
+#: ref-filter.c:2095 refs.c:657
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "忽略損壞的引用 %s"
@@ -6111,94 +6179,108 @@
 msgid "option `%s' must point to a commit"
 msgstr "選項 `%s' 必須指向一個提交"
 
-#: refs.c:262
+#: refs.c:264
 #, c-format
 msgid "%s does not point to a valid object!"
 msgstr "%s 沒有指向一個有效的物件!"
 
-#: refs.c:623
+#: refs.c:572
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr "無法擷取「%s」"
+
+#: refs.c:579
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "分支名稱無效:%s = %s"
+
+#: refs.c:655
 #, c-format
 msgid "ignoring dangling symref %s"
 msgstr "忽略懸空符號引用 %s"
 
-#: refs.c:760
+#: refs.c:792
 #, c-format
 msgid "could not open '%s' for writing: %s"
 msgstr "無法為寫入開啟 '%s':%s"
 
-#: refs.c:770 refs.c:821
+#: refs.c:802 refs.c:853
 #, c-format
 msgid "could not read ref '%s'"
 msgstr "無法讀取引用 '%s'"
 
-#: refs.c:776
+#: refs.c:808
 #, c-format
 msgid "ref '%s' already exists"
 msgstr "引用 '%s' 已經存在"
 
-#: refs.c:781
+#: refs.c:813
 #, c-format
 msgid "unexpected object ID when writing '%s'"
 msgstr "寫入 '%s' 時意外的物件 ID"
 
-#: refs.c:789 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
-#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1173
-#: wrapper.c:620
+#: refs.c:821 sequencer.c:408 sequencer.c:2721 sequencer.c:2925
+#: sequencer.c:2939 sequencer.c:3195 sequencer.c:5159 strbuf.c:1168
+#: wrapper.c:628
 #, c-format
 msgid "could not write to '%s'"
 msgstr "不能寫入 '%s'"
 
-#: refs.c:816 strbuf.c:1171 wrapper.c:188 wrapper.c:358 builtin/am.c:719
+#: refs.c:848 strbuf.c:1166 wrapper.c:196 wrapper.c:366 builtin/am.c:719
 #: builtin/rebase.c:852
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "無法開啟 '%s' 進行寫入"
 
-#: refs.c:823
+#: refs.c:855
 #, c-format
 msgid "unexpected object ID when deleting '%s'"
 msgstr "刪除 '%s' 時意外的物件 ID"
 
-#: refs.c:954
+#: refs.c:986
 #, c-format
 msgid "log for ref %s has gap after %s"
 msgstr "引用 %s 的日誌在 %s 之後有缺口"
 
-#: refs.c:960
+#: refs.c:992
 #, c-format
 msgid "log for ref %s unexpectedly ended on %s"
 msgstr "引用 %s 的日誌意外終止於 %s"
 
-#: refs.c:1019
+#: refs.c:1051
 #, c-format
 msgid "log for %s is empty"
 msgstr "%s 的日誌為空"
 
-#: refs.c:1111
+#: refs.c:1143
 #, c-format
 msgid "refusing to update ref with bad name '%s'"
 msgstr "拒絕更新有錯誤名稱 '%s' 的引用"
 
-#: refs.c:1187
+#: refs.c:1219
 #, c-format
 msgid "update_ref failed for ref '%s': %s"
 msgstr "對引用 '%s' 執行 update_ref 失敗:%s"
 
-#: refs.c:1979
+#: refs.c:2011
 #, c-format
 msgid "multiple updates for ref '%s' not allowed"
 msgstr "不允許對引用 '%s' 多次更新"
 
-#: refs.c:2011
+#: refs.c:2098
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "在隔離環境中禁止更新引用"
 
-#: refs.c:2107 refs.c:2137
+#: refs.c:2109
+msgid "ref updates aborted by hook"
+msgstr "引用更新被掛鉤拒絕"
+
+#: refs.c:2209 refs.c:2239
 #, c-format
 msgid "'%s' exists; cannot create '%s'"
 msgstr "'%s' 已存在,無法建立 '%s'"
 
-#: refs.c:2113 refs.c:2148
+#: refs.c:2215 refs.c:2250
 #, c-format
 msgid "cannot process '%s' and '%s' at the same time"
 msgstr "無法同時處理 '%s' 和 '%s'"
@@ -6473,7 +6555,7 @@
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr "  (使用 \"git pull\" 來合併遠端分支)\n"
 
-#: remote.c:2233
+#: remote.c:2241
 #, c-format
 msgid "cannot parse expected object name '%s'"
 msgstr "無法解析期望的物件名 '%s'"
@@ -6600,20 +6682,20 @@
 msgid "failed to find tree of %s"
 msgstr "無法找到 %s 指向的樹"
 
-#: revision.c:2655
+#: revision.c:2661
 msgid "your current branch appears to be broken"
 msgstr "您的目前分支好像被損壞"
 
-#: revision.c:2658
+#: revision.c:2664
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "您的目前分支 '%s' 尚無任何提交"
 
-#: revision.c:2866
+#: revision.c:2873
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent 與 --bisect 不相容"
 
-#: revision.c:2870
+#: revision.c:2877
 msgid "-L does not yet support diff formats besides -p and -s"
 msgstr "-L 尚不支援 -p 和 -s 之外的差異格式"
 
@@ -6653,21 +6735,25 @@
 msgid "failed to sign the push certificate"
 msgstr "為推送證書籤名失敗"
 
-#: send-pack.c:399
+#: send-pack.c:394
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr "接收端不支援此版本庫的雜湊算法"
+
+#: send-pack.c:403
 msgid "the receiving end does not support --signed push"
 msgstr "接收端不支援簽名推送"
 
-#: send-pack.c:401
+#: send-pack.c:405
 msgid ""
 "not sending a push certificate since the receiving end does not support --"
 "signed push"
 msgstr "未傳送推送證書,因為接收端不支援簽名推送"
 
-#: send-pack.c:413
+#: send-pack.c:417
 msgid "the receiving end does not support --atomic push"
 msgstr "接收端不支援原子推送"
 
-#: send-pack.c:418
+#: send-pack.c:422
 msgid "the receiving end does not support push options"
 msgstr "接收端不支援推送選項"
 
@@ -6787,7 +6873,7 @@
 msgid "unable to dequote value of '%s'"
 msgstr "無法為 '%s' 的值去引號"
 
-#: sequencer.c:785 wrapper.c:190 wrapper.c:360 builtin/am.c:710
+#: sequencer.c:785 wrapper.c:198 wrapper.c:368 builtin/am.c:710
 #: builtin/am.c:802 builtin/merge.c:1125 builtin/rebase.c:896
 #, c-format
 msgid "could not open '%s' for reading"
@@ -7616,84 +7702,84 @@
 msgid "this operation must be run in a work tree"
 msgstr "該動作必須在一個工作區中執行"
 
-#: setup.c:569
+#: setup.c:604
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "期望 git 版本庫版本 <= %d,卻得到 %d"
 
-#: setup.c:577
+#: setup.c:612
 msgid "unknown repository extensions found:"
 msgstr "發現未知的版本庫擴展:"
 
-#: setup.c:596
+#: setup.c:631
 #, c-format
 msgid "error opening '%s'"
 msgstr "開啟 '%s' 發生錯誤"
 
-#: setup.c:598
+#: setup.c:633
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "檔案太大,無法作為 .git 檔案:'%s'"
 
-#: setup.c:600
+#: setup.c:635
 #, c-format
 msgid "error reading %s"
 msgstr "讀取 %s 發生錯誤"
 
-#: setup.c:602
+#: setup.c:637
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "無效的 gitfile 格式:%s"
 
-#: setup.c:604
+#: setup.c:639
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "在 gitfile 中沒有路徑:%s"
 
-#: setup.c:606
+#: setup.c:641
 #, c-format
 msgid "not a git repository: %s"
 msgstr "不是一個 git 版本庫:%s"
 
-#: setup.c:708
+#: setup.c:743
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' 太大"
 
-#: setup.c:722
+#: setup.c:757
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "不是一個 git 版本庫:'%s'"
 
-#: setup.c:751 setup.c:753 setup.c:784
+#: setup.c:786 setup.c:788 setup.c:819
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "不能切換目錄到 '%s'"
 
-#: setup.c:756 setup.c:812 setup.c:822 setup.c:861 setup.c:869
+#: setup.c:791 setup.c:847 setup.c:857 setup.c:896 setup.c:904
 msgid "cannot come back to cwd"
 msgstr "無法返回目前工作目錄"
 
-#: setup.c:883
+#: setup.c:918
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "取得 '%*s%s%s' 狀態(stat)失敗"
 
-#: setup.c:1121
+#: setup.c:1156
 msgid "Unable to read current working directory"
 msgstr "不能讀取目前工作目錄"
 
-#: setup.c:1130 setup.c:1136
+#: setup.c:1165 setup.c:1171
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "不能切換到 '%s'"
 
-#: setup.c:1141
+#: setup.c:1176
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "不是一個 git 版本庫(或者任何父目錄):%s"
 
-#: setup.c:1147
+#: setup.c:1182
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -7702,7 +7788,7 @@
 "不是一個 git 版本庫(或者直至掛載點 %s 的任何父目錄)\n"
 "停止在檔案系統邊界(未設定 GIT_DISCOVERY_ACROSS_FILESYSTEM)。"
 
-#: setup.c:1258
+#: setup.c:1293
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -7711,15 +7797,15 @@
 "參數 core.sharedRepository 的檔案屬性值有問題(0%.3o)。\n"
 "檔案所有者必須始終擁有讀寫權限。"
 
-#: setup.c:1304
+#: setup.c:1340
 msgid "open /dev/null or dup failed"
 msgstr "不能開啟或者複製 /dev/null"
 
-#: setup.c:1319
+#: setup.c:1355
 msgid "fork failed"
 msgstr "fork 失敗"
 
-#: setup.c:1324
+#: setup.c:1360
 msgid "setsid failed"
 msgstr "setsid 失敗"
 
@@ -7899,7 +7985,7 @@
 msgid "confused by unstable object source data for %s"
 msgstr "被 %s 的不穩定物件源資料搞糊塗了"
 
-#: sha1-file.c:1906 builtin/pack-objects.c:1055
+#: sha1-file.c:1906 builtin/pack-objects.c:1085
 #, c-format
 msgid "failed utime() on %s"
 msgstr "在 %s 上呼叫 utime() 失敗"
@@ -8075,56 +8161,56 @@
 msgstr "'%.*s' 物件名稱無效。"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte
-#: strbuf.c:853
+#: strbuf.c:848
 #, c-format
 msgid "%u.%2.2u GiB"
 msgstr "%u.%2.2u GiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
-#: strbuf.c:855
+#: strbuf.c:850
 #, c-format
 msgid "%u.%2.2u GiB/s"
 msgstr "%u.%2.2u GiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte
-#: strbuf.c:863
+#: strbuf.c:858
 #, c-format
 msgid "%u.%2.2u MiB"
 msgstr "%u.%2.2u MiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
-#: strbuf.c:865
+#: strbuf.c:860
 #, c-format
 msgid "%u.%2.2u MiB/s"
 msgstr "%u.%2.2u MiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte
-#: strbuf.c:872
+#: strbuf.c:867
 #, c-format
 msgid "%u.%2.2u KiB"
 msgstr "%u.%2.2u KiB"
 
 #. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
-#: strbuf.c:874
+#: strbuf.c:869
 #, c-format
 msgid "%u.%2.2u KiB/s"
 msgstr "%u.%2.2u KiB/s"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte
-#: strbuf.c:880
+#: strbuf.c:875
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u 位元組"
 
 #. TRANSLATORS: IEC 80000-13:2008 byte/second
-#: strbuf.c:882
+#: strbuf.c:877
 #, c-format
 msgid "%u byte/s"
 msgid_plural "%u bytes/s"
 msgstr[0] "%u 位元組/秒"
 
-#: strbuf.c:1180
+#: strbuf.c:1175
 #, c-format
 msgid "could not edit '%s'"
 msgstr "無法編輯 '%s'"
@@ -8363,7 +8449,7 @@
 msgid "could not read from stdin"
 msgstr "不能自標準輸入讀取"
 
-#: trailer.c:1011 wrapper.c:665
+#: trailer.c:1011 wrapper.c:673
 #, c-format
 msgid "could not stat %s"
 msgstr "不能對 %s 呼叫 stat"
@@ -8387,177 +8473,182 @@
 msgid "could not rename temporary file to %s"
 msgstr "不能重新命名暫存檔為 %s"
 
-#: transport-helper.c:61 transport-helper.c:90
+#: transport-helper.c:62 transport-helper.c:91
 msgid "full write to remote helper failed"
 msgstr "完整寫入遠端助手失敗"
 
-#: transport-helper.c:144
+#: transport-helper.c:145
 #, c-format
 msgid "unable to find remote helper for '%s'"
 msgstr "無法為 '%s' 找到遠端助手"
 
-#: transport-helper.c:160 transport-helper.c:571
+#: transport-helper.c:161 transport-helper.c:575
 msgid "can't dup helper output fd"
 msgstr "無法複製助手輸出檔案句柄"
 
-#: transport-helper.c:211
+#: transport-helper.c:214
 #, c-format
 msgid ""
 "unknown mandatory capability %s; this remote helper probably needs newer "
 "version of Git"
 msgstr "未知的強制能力 %s,該遠端助手可能需要新版本的Git"
 
-#: transport-helper.c:217
+#: transport-helper.c:220
 msgid "this remote helper should implement refspec capability"
 msgstr "遠端助手需要實現 refspec 能力"
 
-#: transport-helper.c:284 transport-helper.c:425
+#: transport-helper.c:287 transport-helper.c:429
 #, c-format
 msgid "%s unexpectedly said: '%s'"
 msgstr "%s 意外地說:'%s'"
 
-#: transport-helper.c:414
+#: transport-helper.c:417
 #, c-format
 msgid "%s also locked %s"
 msgstr "%s 也鎖定了 %s"
 
-#: transport-helper.c:493
+#: transport-helper.c:497
 msgid "couldn't run fast-import"
 msgstr "不能執行 fast-import"
 
-#: transport-helper.c:516
+#: transport-helper.c:520
 msgid "error while running fast-import"
 msgstr "執行 fast-import 發生錯誤"
 
-#: transport-helper.c:545 transport-helper.c:1135
+#: transport-helper.c:549 transport-helper.c:1156
 #, c-format
 msgid "could not read ref %s"
 msgstr "無法讀取引用 %s"
 
-#: transport-helper.c:590
+#: transport-helper.c:594
 #, c-format
 msgid "unknown response to connect: %s"
 msgstr "連線時未知的回應:%s"
 
-#: transport-helper.c:612
+#: transport-helper.c:616
 msgid "setting remote service path not supported by protocol"
 msgstr "協定不支援設定遠端服務路徑"
 
-#: transport-helper.c:614
+#: transport-helper.c:618
 msgid "invalid remote service path"
 msgstr "無效的遠端服務路徑"
 
-#: transport-helper.c:657 transport.c:1339
+#: transport-helper.c:661 transport.c:1347
 msgid "operation not supported by protocol"
 msgstr "協定不支援該動作"
 
-#: transport-helper.c:660
+#: transport-helper.c:664
 #, c-format
 msgid "can't connect to subservice %s"
 msgstr "不能連線到子服務 %s"
 
-#: transport-helper.c:736
+#: transport-helper.c:740
 #, c-format
 msgid "expected ok/error, helper said '%s'"
 msgstr "預期 ok/error,助手說 '%s'"
 
-#: transport-helper.c:789
+#: transport-helper.c:793
 #, c-format
 msgid "helper reported unexpected status of %s"
 msgstr "助手報告 %s 的意外狀態"
 
-#: transport-helper.c:850
+#: transport-helper.c:854
 #, c-format
 msgid "helper %s does not support dry-run"
 msgstr "助手 %s 不支援 dry-run"
 
-#: transport-helper.c:853
+#: transport-helper.c:857
 #, c-format
 msgid "helper %s does not support --signed"
 msgstr "助手 %s 不支援 --signed"
 
-#: transport-helper.c:856
+#: transport-helper.c:860
 #, c-format
 msgid "helper %s does not support --signed=if-asked"
 msgstr "助手 %s 不支援 --signed=if-asked"
 
-#: transport-helper.c:861
+#: transport-helper.c:865
 #, c-format
 msgid "helper %s does not support --atomic"
 msgstr "助手 %s 不支援 --atomic"
 
-#: transport-helper.c:867
+#: transport-helper.c:871
 #, c-format
 msgid "helper %s does not support 'push-option'"
 msgstr "助手 %s 不支援 'push-option'"
 
-#: transport-helper.c:966
+#: transport-helper.c:970
 msgid "remote-helper doesn't support push; refspec needed"
 msgstr "remote-heper 不支援 push,需要引用表達式"
 
-#: transport-helper.c:971
+#: transport-helper.c:975
 #, c-format
 msgid "helper %s does not support 'force'"
 msgstr "助手 %s 不支援 'force'"
 
-#: transport-helper.c:1018
+#: transport-helper.c:1022
 msgid "couldn't run fast-export"
 msgstr "無法執行 fast-export"
 
-#: transport-helper.c:1023
+#: transport-helper.c:1027
 msgid "error while running fast-export"
 msgstr "執行 fast-export 時發生錯誤"
 
-#: transport-helper.c:1048
+#: transport-helper.c:1052
 #, c-format
 msgid ""
 "No refs in common and none specified; doing nothing.\n"
-"Perhaps you should specify a branch such as 'master'.\n"
+"Perhaps you should specify a branch.\n"
 msgstr ""
 "沒有共同的引用並且也沒有指定,什麼也不會做。\n"
-"可能您應該指定一個分支如 'master'。\n"
+"您或許得指定一個分支。\n"
 
-#: transport-helper.c:1121
+#: transport-helper.c:1133
+#, c-format
+msgid "unsupported object format '%s'"
+msgstr "不支援的物件格式「%s」"
+
+#: transport-helper.c:1142
 #, c-format
 msgid "malformed response in ref list: %s"
 msgstr "引用列表中格式錯誤的回應:%s"
 
-#: transport-helper.c:1273
+#: transport-helper.c:1294
 #, c-format
 msgid "read(%s) failed"
 msgstr "讀取(%s)失敗"
 
-#: transport-helper.c:1300
+#: transport-helper.c:1321
 #, c-format
 msgid "write(%s) failed"
 msgstr "寫(%s)失敗"
 
-#: transport-helper.c:1349
+#: transport-helper.c:1370
 #, c-format
 msgid "%s thread failed"
 msgstr "%s 執行緒失敗"
 
-#: transport-helper.c:1353
+#: transport-helper.c:1374
 #, c-format
 msgid "%s thread failed to join: %s"
 msgstr "%s 執行緒等待失敗:%s"
 
-#: transport-helper.c:1372 transport-helper.c:1376
+#: transport-helper.c:1393 transport-helper.c:1397
 #, c-format
 msgid "can't start thread for copying data: %s"
 msgstr "不能啟動執行緒來複製資料:%s"
 
-#: transport-helper.c:1413
+#: transport-helper.c:1434
 #, c-format
 msgid "%s process failed to wait"
 msgstr "%s 進程等待失敗"
 
-#: transport-helper.c:1417
+#: transport-helper.c:1438
 #, c-format
 msgid "%s process failed"
 msgstr "%s 進程失敗"
 
-#: transport-helper.c:1435 transport-helper.c:1444
+#: transport-helper.c:1456 transport-helper.c:1465
 msgid "can't start thread for copying data"
 msgstr "不能啟動執行緒來複製資料"
 
@@ -8571,33 +8662,33 @@
 msgid "could not read bundle '%s'"
 msgstr "無法讀取 bundle '%s'"
 
-#: transport.c:214
+#: transport.c:220
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "傳輸:無效的深度選項 '%s'"
 
-#: transport.c:266
+#: transport.c:272
 msgid "see protocol.version in 'git help config' for more details"
 msgstr "檢視 'git help config' 中的 protocol.version 取得更多訊息"
 
-#: transport.c:267
+#: transport.c:273
 msgid "server options require protocol version 2 or later"
 msgstr "服務端選項需要版本 2 協定或更高"
 
-#: transport.c:632
+#: transport.c:631
 msgid "could not parse transport.color.* config"
 msgstr "不能解析 transport.color.* 設定"
 
-#: transport.c:705
+#: transport.c:704
 msgid "support for protocol v2 not implemented yet"
 msgstr "協定 v2 的支援尚未實現"
 
-#: transport.c:839
+#: transport.c:838
 #, c-format
 msgid "unknown value for config '%s': %s"
 msgstr "設定 '%s' 的取值未知:%s"
 
-#: transport.c:905
+#: transport.c:904
 #, c-format
 msgid "transport '%s' not allowed"
 msgstr "傳輸 '%s' 不允許"
@@ -8606,14 +8697,14 @@
 msgid "git-over-rsync is no longer supported"
 msgstr "不再支援 git-over-rsync"
 
-#: transport.c:1052
+#: transport.c:1059
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
 "not be found on any remote:\n"
 msgstr "下列子模組路徑所包含的修改在任何遠端源中都找不到:\n"
 
-#: transport.c:1056
+#: transport.c:1063
 #, c-format
 msgid ""
 "\n"
@@ -8640,11 +8731,11 @@
 "以推送至遠端。\n"
 "\n"
 
-#: transport.c:1064
+#: transport.c:1071
 msgid "Aborting."
 msgstr "正在終止。"
 
-#: transport.c:1209
+#: transport.c:1216
 msgid "failed to push all needed submodules"
 msgstr "不能推送全部需要的子模組"
 
@@ -8909,7 +9000,7 @@
 msgid "Updating index flags"
 msgstr "正在更新索引旗標"
 
-#: upload-pack.c:1337
+#: upload-pack.c:1415
 msgid "expected flush after fetch arguments"
 msgstr "在 fetch 引數應為一個 flush 包"
 
@@ -8946,47 +9037,47 @@
 msgid "Fetching objects"
 msgstr "正在抓取物件"
 
-#: worktree.c:262 builtin/am.c:2098
+#: worktree.c:248 builtin/am.c:2098
 #, c-format
 msgid "failed to read '%s'"
 msgstr "讀取 '%s' 失敗"
 
-#: worktree.c:309
+#: worktree.c:295
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
 msgstr "在主工作區的 '%s' 不是版本庫目錄"
 
-#: worktree.c:320
+#: worktree.c:306
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
 msgstr "檔案 '%s' 不包含工作區的絕對路徑"
 
-#: worktree.c:332
+#: worktree.c:318
 #, c-format
 msgid "'%s' does not exist"
 msgstr "'%s' 不存在"
 
-#: worktree.c:338
+#: worktree.c:324
 #, c-format
 msgid "'%s' is not a .git file, error code %d"
 msgstr "'%s' 不是一個 .git 檔案,錯誤碼 %d"
 
-#: worktree.c:347
+#: worktree.c:333
 #, c-format
 msgid "'%s' does not point back to '%s'"
 msgstr "'%s' 沒有指回到 '%s'"
 
-#: wrapper.c:186 wrapper.c:356
+#: wrapper.c:194 wrapper.c:364
 #, c-format
 msgid "could not open '%s' for reading and writing"
 msgstr "無法開啟 '%s' 進行讀寫"
 
-#: wrapper.c:387 wrapper.c:588
+#: wrapper.c:395 wrapper.c:596
 #, c-format
 msgid "unable to access '%s'"
 msgstr "不能存取 '%s'"
 
-#: wrapper.c:596
+#: wrapper.c:604
 msgid "unable to get current working directory"
 msgstr "不能取得目前工作目錄"
 
@@ -9394,39 +9485,44 @@
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (使用 \"git bisect reset\" 檢出原有分支)"
 
-#: wt-status.c:1692
+#: wt-status.c:1494
+#, c-format
+msgid "You are in a sparse checkout with %d%% of tracked files present."
+msgstr "您處於稀疏簽出狀態,包含 %d%% 的追蹤檔案。"
+
+#: wt-status.c:1733
 msgid "On branch "
 msgstr "位於分支 "
 
-#: wt-status.c:1699
+#: wt-status.c:1740
 msgid "interactive rebase in progress; onto "
 msgstr "互動式重定基底動作正在進行中;至 "
 
-#: wt-status.c:1701
+#: wt-status.c:1742
 msgid "rebase in progress; onto "
 msgstr "重定基底動作正在進行中;至 "
 
-#: wt-status.c:1711
+#: wt-status.c:1752
 msgid "Not currently on any branch."
 msgstr "目前不在任何分支上。"
 
-#: wt-status.c:1728
+#: wt-status.c:1769
 msgid "Initial commit"
 msgstr "初始提交"
 
-#: wt-status.c:1729
+#: wt-status.c:1770
 msgid "No commits yet"
 msgstr "尚無提交"
 
-#: wt-status.c:1743
+#: wt-status.c:1784
 msgid "Untracked files"
 msgstr "未追蹤的檔案"
 
-#: wt-status.c:1745
+#: wt-status.c:1786
 msgid "Ignored files"
 msgstr "忽略的檔案"
 
-#: wt-status.c:1749
+#: wt-status.c:1790
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -9436,97 +9532,97 @@
 "耗費了 %.2f 秒以枚舉未追蹤的檔案。'status -uno' 也許能提高速度,\n"
 "但您需要小心不要忘了新增新檔案(參見 'git help status')。"
 
-#: wt-status.c:1755
+#: wt-status.c:1796
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "未追蹤的檔案沒有列出%s"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: wt-status.c:1757
+#: wt-status.c:1798
 msgid " (use -u option to show untracked files)"
 msgstr " (使用 -u 參數顯示未追蹤的檔案)"
 
-#: wt-status.c:1763
+#: wt-status.c:1804
 msgid "No changes"
 msgstr "沒有修改"
 
-#: wt-status.c:1768
+#: wt-status.c:1809
 #, 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:1771
+#: wt-status.c:1812
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "修改尚未加入提交\n"
 
-#: wt-status.c:1774
+#: wt-status.c:1815
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr "提交為空,但是存在尚未追蹤的檔案(使用 \"git add\" 建立追蹤)\n"
 
-#: wt-status.c:1777
+#: wt-status.c:1818
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "提交為空,但是存在尚未追蹤的檔案\n"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: wt-status.c:1780
+#: wt-status.c:1821
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr "無檔案要提交(建立/複製檔案並使用 \"git add\" 建立追蹤)\n"
 
-#: wt-status.c:1783 wt-status.c:1788
+#: wt-status.c:1824 wt-status.c:1829
 #, c-format
 msgid "nothing to commit\n"
 msgstr "無檔案要提交\n"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: wt-status.c:1786
+#: wt-status.c:1827
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr "無檔案要提交(使用 -u 顯示未追蹤的檔案)\n"
 
 #  譯者:中文字串拼接,可刪除前導空格
-#: wt-status.c:1790
+#: wt-status.c:1831
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "沒有要提交的檔案,工作區為乾淨狀態\n"
 
-#: wt-status.c:1903
+#: wt-status.c:1944
 msgid "No commits yet on "
 msgstr "尚無提交在 "
 
-#: wt-status.c:1907
+#: wt-status.c:1948
 msgid "HEAD (no branch)"
 msgstr "HEAD(非分支)"
 
-#: wt-status.c:1938
+#: wt-status.c:1979
 msgid "different"
 msgstr "不同"
 
 #  譯者:請維持句尾空格
-#: wt-status.c:1940 wt-status.c:1948
+#: wt-status.c:1981 wt-status.c:1989
 msgid "behind "
 msgstr "落後 "
 
-#: wt-status.c:1943 wt-status.c:1946
+#: wt-status.c:1984 wt-status.c:1987
 msgid "ahead "
 msgstr "領先 "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2468
+#: wt-status.c:2509
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "不能%s:您有未暫存的變更。"
 
-#: wt-status.c:2474
+#: wt-status.c:2515
 msgid "additionally, your index contains uncommitted changes."
 msgstr "另外,您的索引中包含未提交的變更。"
 
-#: wt-status.c:2476
+#: wt-status.c:2517
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "不能%s:您的索引中包含未提交的變更。"
@@ -9603,7 +9699,7 @@
 msgid "interactive picking"
 msgstr "互動式揀選"
 
-#: builtin/add.c:326 builtin/checkout.c:1535 builtin/reset.c:308
+#: builtin/add.c:326 builtin/checkout.c:1533 builtin/reset.c:308
 msgid "select hunks interactively"
 msgstr "互動式挑選資料區塊"
 
@@ -9728,12 +9824,12 @@
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "參數 --chmod 取值 '%s' 必須是 -x 或 +x"
 
-#: builtin/add.c:501 builtin/checkout.c:1703 builtin/commit.c:351
+#: builtin/add.c:501 builtin/checkout.c:1701 builtin/commit.c:351
 #: builtin/reset.c:328 builtin/rm.c:272 builtin/stash.c:1506
 msgid "--pathspec-from-file is incompatible with pathspec arguments"
 msgstr "--pathspec-from-file 與 <路徑規格> 參數不相容"
 
-#: builtin/add.c:508 builtin/checkout.c:1715 builtin/commit.c:357
+#: builtin/add.c:508 builtin/checkout.c:1713 builtin/commit.c:357
 #: builtin/reset.c:334 builtin/rm.c:278 builtin/stash.c:1512
 msgid "--pathspec-file-nul requires --pathspec-from-file"
 msgstr "--pathspec-file-nul 需要 --pathspec-from-file"
@@ -9989,7 +10085,7 @@
 msgid "allow fall back on 3way merging if needed"
 msgstr "如果必要,允許使用三方合併"
 
-#: builtin/am.c:2218 builtin/init-db.c:541 builtin/prune-packed.c:16
+#: builtin/am.c:2218 builtin/init-db.c:559 builtin/prune-packed.c:16
 #: builtin/repack.c:306 builtin/stash.c:816
 msgid "be quiet"
 msgstr "靜默模式"
@@ -10044,7 +10140,7 @@
 
 #: builtin/am.c:2262 builtin/branch.c:659 builtin/for-each-ref.c:38
 #: builtin/replace.c:556 builtin/tag.c:438 builtin/verify-tag.c:38
-#: bugreport.c:131
+#: bugreport.c:137
 msgid "format"
 msgstr "格式"
 
@@ -10334,111 +10430,115 @@
 "指令 'git bisect terms' 的參數 %s 無效。\n"
 "支援的選項有:--term-good|--term-old 和 --term-bad|--term-new。"
 
-#: builtin/bisect--helper.c:478
+#: builtin/bisect--helper.c:460 builtin/bisect--helper.c:473
+msgid "'' is not a valid term"
+msgstr "'' 不是一個有效的術語"
+
+#: builtin/bisect--helper.c:483
 #, c-format
 msgid "unrecognized option: '%s'"
 msgstr "未識別的選項:'%s'"
 
-#: builtin/bisect--helper.c:482
+#: builtin/bisect--helper.c:487
 #, c-format
 msgid "'%s' does not appear to be a valid revision"
 msgstr "'%s' 看起來不是一個有效的版本"
 
-#: builtin/bisect--helper.c:514
+#: builtin/bisect--helper.c:519
 msgid "bad HEAD - I need a HEAD"
 msgstr "壞的 HEAD - 我需要一個 HEAD"
 
-#: builtin/bisect--helper.c:529
+#: builtin/bisect--helper.c:534
 #, c-format
 msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
 msgstr "檢出 '%s' 失敗。嘗試 'git bisect start <有效分支>'。"
 
-#: builtin/bisect--helper.c:550
+#: builtin/bisect--helper.c:555
 msgid "won't bisect on cg-seek'ed tree"
 msgstr "不會在做了 cg-seek 的樹上做二分尋找"
 
-#: builtin/bisect--helper.c:553
+#: builtin/bisect--helper.c:558
 msgid "bad HEAD - strange symbolic ref"
 msgstr "壞的 HEAD - 奇怪的符號引用"
 
-#: builtin/bisect--helper.c:577
+#: builtin/bisect--helper.c:582
 #, c-format
 msgid "invalid ref: '%s'"
 msgstr "無效的引用:'%s'"
 
-#: builtin/bisect--helper.c:633
+#: builtin/bisect--helper.c:638
 msgid "perform 'git bisect next'"
 msgstr "執行 'git bisect next'"
 
-#: builtin/bisect--helper.c:635
+#: builtin/bisect--helper.c:640
 msgid "write the terms to .git/BISECT_TERMS"
 msgstr "將術語寫入 .git/BISECT_TERMS"
 
-#: builtin/bisect--helper.c:637
+#: builtin/bisect--helper.c:642
 msgid "cleanup the bisection state"
 msgstr "清除二分尋找狀態"
 
-#: builtin/bisect--helper.c:639
+#: builtin/bisect--helper.c:644
 msgid "check for expected revs"
 msgstr "檢查預期的版本"
 
-#: builtin/bisect--helper.c:641
+#: builtin/bisect--helper.c:646
 msgid "reset the bisection state"
 msgstr "清除二分尋找狀態"
 
-#: builtin/bisect--helper.c:643
+#: builtin/bisect--helper.c:648
 msgid "write out the bisection state in BISECT_LOG"
 msgstr "將二分尋找的狀態寫入 BISECT_LOG"
 
-#: builtin/bisect--helper.c:645
+#: builtin/bisect--helper.c:650
 msgid "check and set terms in a bisection state"
 msgstr "在一個二分尋找狀態中檢查和設定術語"
 
-#: builtin/bisect--helper.c:647
+#: builtin/bisect--helper.c:652
 msgid "check whether bad or good terms exist"
 msgstr "檢查壞的或好的術語是否存在"
 
-#: builtin/bisect--helper.c:649
+#: builtin/bisect--helper.c:654
 msgid "print out the bisect terms"
 msgstr "列印二分尋找術語"
 
-#: builtin/bisect--helper.c:651
+#: builtin/bisect--helper.c:656
 msgid "start the bisect session"
 msgstr "啟動二分尋找過程"
 
-#: builtin/bisect--helper.c:653
+#: builtin/bisect--helper.c:658
 msgid "update BISECT_HEAD instead of checking out the current commit"
 msgstr "更新 BISECT_HEAD 而非檢出目前提交"
 
-#: builtin/bisect--helper.c:655
+#: builtin/bisect--helper.c:660
 msgid "no log for BISECT_WRITE"
 msgstr "BISECT_WRITE 無日誌"
 
-#: builtin/bisect--helper.c:673
+#: builtin/bisect--helper.c:678
 msgid "--write-terms requires two arguments"
 msgstr "--write-terms 需要兩個參數"
 
-#: builtin/bisect--helper.c:677
+#: builtin/bisect--helper.c:682
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state 不帶參數"
 
-#: builtin/bisect--helper.c:684
+#: builtin/bisect--helper.c:689
 msgid "--bisect-reset requires either no argument or a commit"
 msgstr "--bisect-reset 無需參數或者需要一個提交"
 
-#: builtin/bisect--helper.c:688
+#: builtin/bisect--helper.c:693
 msgid "--bisect-write requires either 4 or 5 arguments"
 msgstr "--bisect-write 需要 4 或 5 個參數"
 
-#: builtin/bisect--helper.c:694
+#: builtin/bisect--helper.c:699
 msgid "--check-and-set-terms requires 3 arguments"
 msgstr "--check-and-set-terms 需要 3 個參數"
 
-#: builtin/bisect--helper.c:700
+#: builtin/bisect--helper.c:705
 msgid "--bisect-next-check requires 2 or 3 arguments"
 msgstr "--bisect-next-check 需要 2 或 3 個參數"
 
-#: builtin/bisect--helper.c:706
+#: builtin/bisect--helper.c:711
 msgid "--bisect-terms requires 0 or 1 argument"
 msgstr "--bisect-terms 需要 0 或 1 個參數"
 
@@ -11035,19 +11135,19 @@
 msgid "git bundle unbundle <file> [<refname>...]"
 msgstr "git bundle unbundle <檔案> [<參考名稱>...]"
 
-#: builtin/bundle.c:66 builtin/pack-objects.c:3376
+#: builtin/bundle.c:66 builtin/pack-objects.c:3448
 msgid "do not show progress meter"
 msgstr "不顯示進度表"
 
-#: builtin/bundle.c:68 builtin/pack-objects.c:3378
+#: builtin/bundle.c:68 builtin/pack-objects.c:3450
 msgid "show progress meter"
 msgstr "顯示進度表"
 
-#: builtin/bundle.c:70 builtin/pack-objects.c:3380
+#: builtin/bundle.c:70 builtin/pack-objects.c:3452
 msgid "show progress meter during object writing phase"
 msgstr "在物件寫入階段顯示進度表"
 
-#: builtin/bundle.c:73 builtin/pack-objects.c:3383
+#: builtin/bundle.c:73 builtin/pack-objects.c:3455
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "當進度表顯示時類似於 --all-progress"
 
@@ -11086,12 +11186,15 @@
 "p | <類型> | --textconv | --filters) [--path=<路徑>] <物件>"
 
 #: builtin/cat-file.c:599
+#| msgid ""
+#| "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | "
+#| "--filters]"
 msgid ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 msgstr ""
-"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
-"filters]"
+"git cat-file (--batch[=<format>] | --batch-check[=<format>]) [--follow-"
+"symlinks] [--textconv | --filters]"
 
 #: builtin/cat-file.c:620
 msgid "only one batch option may be specified"
@@ -11125,7 +11228,7 @@
 msgid "for blob objects, run filters on object's content"
 msgstr "對於資料物件,對其內容做過濾"
 
-#: builtin/cat-file.c:648 git-submodule.sh:984
+#: builtin/cat-file.c:648 git-submodule.sh:958
 msgid "blob"
 msgstr "blob"
 
@@ -11185,8 +11288,8 @@
 msgid "terminate input and output records by a NUL character"
 msgstr "輸入和輸出的紀錄使用 NUL 字元終結"
 
-#: builtin/check-ignore.c:21 builtin/checkout.c:1488 builtin/gc.c:537
-#: builtin/worktree.c:502
+#: builtin/check-ignore.c:21 builtin/checkout.c:1486 builtin/gc.c:537
+#: builtin/worktree.c:561
 msgid "suppress progress reporting"
 msgstr "不顯示進度報告"
 
@@ -11278,7 +11381,7 @@
 #: builtin/checkout-index.c:178 builtin/column.c:31
 #: builtin/submodule--helper.c:1400 builtin/submodule--helper.c:1403
 #: builtin/submodule--helper.c:1411 builtin/submodule--helper.c:1909
-#: builtin/worktree.c:675
+#: builtin/worktree.c:754
 msgid "string"
 msgstr "字串"
 
@@ -11390,11 +11493,11 @@
 msgid "path '%s' is unmerged"
 msgstr "路徑 '%s' 未合併"
 
-#: builtin/checkout.c:704
+#: builtin/checkout.c:702
 msgid "you need to resolve your current index first"
 msgstr "您需要先解決目前索引的衝突"
 
-#: builtin/checkout.c:758
+#: builtin/checkout.c:756
 #, c-format
 msgid ""
 "cannot continue with staged changes in the following files:\n"
@@ -11403,51 +11506,51 @@
 "不能繼續,下列檔案有暫存的修改:\n"
 "%s"
 
-#: builtin/checkout.c:861
+#: builtin/checkout.c:859
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "不能對 '%s' 執行 reflog 動作:%s\n"
 
-#: builtin/checkout.c:903
+#: builtin/checkout.c:901
 msgid "HEAD is now at"
 msgstr "HEAD 目前位於"
 
-#: builtin/checkout.c:907 builtin/clone.c:720
+#: builtin/checkout.c:905 builtin/clone.c:720
 msgid "unable to update HEAD"
 msgstr "不能更新 HEAD"
 
-#: builtin/checkout.c:911
+#: builtin/checkout.c:909
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "重設分支 '%s'\n"
 
-#: builtin/checkout.c:914
+#: builtin/checkout.c:912
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "已經位於 '%s'\n"
 
-#: builtin/checkout.c:918
+#: builtin/checkout.c:916
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "切換並重設分支 '%s'\n"
 
-#: builtin/checkout.c:920 builtin/checkout.c:1344
+#: builtin/checkout.c:918 builtin/checkout.c:1342
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "切換到一個新分支 '%s'\n"
 
-#: builtin/checkout.c:922
+#: builtin/checkout.c:920
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "切換到分支 '%s'\n"
 
 #  譯者:請維持前導空格
-#: builtin/checkout.c:973
+#: builtin/checkout.c:971
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... 及其它 %d 個。\n"
 
-#: builtin/checkout.c:979
+#: builtin/checkout.c:977
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -11464,7 +11567,7 @@
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:998
+#: builtin/checkout.c:996
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -11485,19 +11588,19 @@
 " git branch <新分支名> %s\n"
 "\n"
 
-#: builtin/checkout.c:1033
+#: builtin/checkout.c:1031
 msgid "internal error in revision walk"
 msgstr "在版本遍歷時遇到內部錯誤"
 
-#: builtin/checkout.c:1037
+#: builtin/checkout.c:1035
 msgid "Previous HEAD position was"
 msgstr "之前的 HEAD 位置是"
 
-#: builtin/checkout.c:1077 builtin/checkout.c:1339
+#: builtin/checkout.c:1075 builtin/checkout.c:1337
 msgid "You are on a branch yet to be born"
 msgstr "您位於一個尚未初始化的分支"
 
-#: builtin/checkout.c:1152
+#: builtin/checkout.c:1150
 #, c-format
 msgid ""
 "'%s' could be both a local file and a tracking branch.\n"
@@ -11506,7 +11609,7 @@
 "'%s' 既可以是一個本機檔案,也可以是一個追蹤分支。\n"
 "請使用 --(和可選的 --no-guess)來消除歧義"
 
-#: builtin/checkout.c:1159
+#: builtin/checkout.c:1157
 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"
@@ -11525,51 +11628,51 @@
 "如果您總是喜歡使用模糊的簡短分支名 <name>,而不喜歡如 'origin' 的遠端\n"
 "版本庫名,可以在設定中設定 checkout.defaultRemote=origin。"
 
-#: builtin/checkout.c:1169
+#: builtin/checkout.c:1167
 #, c-format
 msgid "'%s' matched multiple (%d) remote tracking branches"
 msgstr "'%s' 符合多個 (%d) 遠端追蹤分支"
 
-#: builtin/checkout.c:1235
+#: builtin/checkout.c:1233
 msgid "only one reference expected"
 msgstr "預期只有一個引用"
 
-#: builtin/checkout.c:1252
+#: builtin/checkout.c:1250
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "應只有一個引用,卻提供了 %d 個。"
 
-#: builtin/checkout.c:1298 builtin/worktree.c:283 builtin/worktree.c:451
+#: builtin/checkout.c:1296 builtin/worktree.c:342 builtin/worktree.c:510
 #, c-format
 msgid "invalid reference: %s"
 msgstr "無效引用:%s"
 
-#: builtin/checkout.c:1311 builtin/checkout.c:1677
+#: builtin/checkout.c:1309 builtin/checkout.c:1675
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "引用不是一個樹:%s"
 
-#: builtin/checkout.c:1358
+#: builtin/checkout.c:1356
 #, c-format
 msgid "a branch is expected, got tag '%s'"
 msgstr "期望一個分支,得到標籤 '%s'"
 
-#: builtin/checkout.c:1360
+#: builtin/checkout.c:1358
 #, c-format
 msgid "a branch is expected, got remote branch '%s'"
 msgstr "期望一個分支,得到遠端分支 '%s'"
 
-#: builtin/checkout.c:1361 builtin/checkout.c:1369
+#: builtin/checkout.c:1359 builtin/checkout.c:1367
 #, c-format
 msgid "a branch is expected, got '%s'"
 msgstr "期望一個分支,得到 '%s'"
 
-#: builtin/checkout.c:1364
+#: builtin/checkout.c:1362
 #, c-format
 msgid "a branch is expected, got commit '%s'"
 msgstr "期望一個分支,得到提交 '%s'"
 
-#: builtin/checkout.c:1380
+#: builtin/checkout.c:1378
 msgid ""
 "cannot switch branch while merging\n"
 "Consider \"git merge --quit\" or \"git worktree add\"."
@@ -11577,7 +11680,7 @@
 "不能在合併時切換分支\n"
 "考慮使用 \"git merge --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1384
+#: builtin/checkout.c:1382
 msgid ""
 "cannot switch branch in the middle of an am session\n"
 "Consider \"git am --quit\" or \"git worktree add\"."
@@ -11585,7 +11688,7 @@
 "不能在 am 工作階段期間切換分支\n"
 "考慮使用 \"git am --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1388
+#: builtin/checkout.c:1386
 msgid ""
 "cannot switch branch while rebasing\n"
 "Consider \"git rebase --quit\" or \"git worktree add\"."
@@ -11593,7 +11696,7 @@
 "不能在重定基底時切換分支\n"
 "考慮使用 \"git rebase --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1392
+#: builtin/checkout.c:1390
 msgid ""
 "cannot switch branch while cherry-picking\n"
 "Consider \"git cherry-pick --quit\" or \"git worktree add\"."
@@ -11601,7 +11704,7 @@
 "不能在揀選時切換分支\n"
 "考慮使用 \"git cherry-pick --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1396
+#: builtin/checkout.c:1394
 msgid ""
 "cannot switch branch while reverting\n"
 "Consider \"git revert --quit\" or \"git worktree add\"."
@@ -11609,213 +11712,214 @@
 "不能在還原時切換分支\n"
 "考慮使用 \"git revert --quit\" 或 \"git worktree add\"。"
 
-#: builtin/checkout.c:1400
+#: builtin/checkout.c:1398
 msgid "you are switching branch while bisecting"
 msgstr "您在執行二分尋找時切換分支"
 
-#: builtin/checkout.c:1407
+#: builtin/checkout.c:1405
 msgid "paths cannot be used with switching branches"
 msgstr "路徑不能和切換分支同時使用"
 
-#: builtin/checkout.c:1410 builtin/checkout.c:1414 builtin/checkout.c:1418
+#: builtin/checkout.c:1408 builtin/checkout.c:1412 builtin/checkout.c:1416
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' 不能和切換分支同時使用"
 
-#: builtin/checkout.c:1422 builtin/checkout.c:1425 builtin/checkout.c:1428
-#: builtin/checkout.c:1433 builtin/checkout.c:1438
+#: builtin/checkout.c:1420 builtin/checkout.c:1423 builtin/checkout.c:1426
+#: builtin/checkout.c:1431 builtin/checkout.c:1436
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' 不能和 '%s' 同時使用"
 
-#: builtin/checkout.c:1435
+#: builtin/checkout.c:1433
 #, c-format
 msgid "'%s' cannot take <start-point>"
 msgstr "'%s' 不帶 <起始點>"
 
-#: builtin/checkout.c:1443
+#: builtin/checkout.c:1441
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "不能切換分支到一個非提交 '%s'"
 
-#: builtin/checkout.c:1450
+#: builtin/checkout.c:1448
 msgid "missing branch or commit argument"
 msgstr "缺少分支或提交參數"
 
-#: builtin/checkout.c:1492 builtin/clone.c:91 builtin/commit-graph.c:80
-#: builtin/commit-graph.c:164 builtin/fetch.c:168 builtin/merge.c:288
+#: builtin/checkout.c:1490 builtin/clone.c:91 builtin/commit-graph.c:82
+#: builtin/commit-graph.c:189 builtin/fetch.c:168 builtin/merge.c:288
 #: builtin/multi-pack-index.c:27 builtin/pull.c:119 builtin/push.c:561
 #: builtin/send-pack.c:173
 msgid "force progress reporting"
 msgstr "強制顯示進度報告"
 
-#: builtin/checkout.c:1493
+#: builtin/checkout.c:1491
 msgid "perform a 3-way merge with the new branch"
 msgstr "和新的分支執行三方合併"
 
-#: builtin/checkout.c:1494 builtin/log.c:1709 parse-options.h:322
+#: builtin/checkout.c:1492 builtin/log.c:1709 parse-options.h:322
 msgid "style"
 msgstr "風格"
 
-#: builtin/checkout.c:1495
+#: builtin/checkout.c:1493
 msgid "conflict style (merge or diff3)"
 msgstr "衝突輸出風格(merge 或 diff3)"
 
-#: builtin/checkout.c:1507 builtin/worktree.c:499
+#: builtin/checkout.c:1505 builtin/worktree.c:558
 msgid "detach HEAD at named commit"
 msgstr "HEAD 從指定的提交分離"
 
-#: builtin/checkout.c:1508
+#: builtin/checkout.c:1506
 msgid "set upstream info for new branch"
 msgstr "為新的分支設定上游訊息"
 
-#: builtin/checkout.c:1510
+#: builtin/checkout.c:1508
 msgid "force checkout (throw away local modifications)"
 msgstr "強制檢出(捨棄本機修改)"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new-branch"
 msgstr "新分支"
 
-#: builtin/checkout.c:1512
+#: builtin/checkout.c:1510
 msgid "new unparented branch"
 msgstr "新的沒有父提交的分支"
 
-#: builtin/checkout.c:1514 builtin/merge.c:292
+#: builtin/checkout.c:1512 builtin/merge.c:292
 msgid "update ignored files (default)"
 msgstr "更新忽略的檔案(預設)"
 
-#: builtin/checkout.c:1517
+#: builtin/checkout.c:1515
 msgid "do not check if another worktree is holding the given ref"
 msgstr "不檢查指定的引用是否被其他工作區所占用"
 
-#: builtin/checkout.c:1530
+#: builtin/checkout.c:1528
 msgid "checkout our version for unmerged files"
 msgstr "對尚未合併的檔案檢出我們的版本"
 
-#: builtin/checkout.c:1533
+#: builtin/checkout.c:1531
 msgid "checkout their version for unmerged files"
 msgstr "對尚未合併的檔案檢出他們的版本"
 
-#: builtin/checkout.c:1537
+#: builtin/checkout.c:1535
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "對路徑不做稀疏檢出的限制"
 
-#: builtin/checkout.c:1592
+#: builtin/checkout.c:1590
 #, c-format
 msgid "-%c, -%c and --orphan are mutually exclusive"
 msgstr "-%c、-%c 和 --orphan 是互斥的"
 
-#: builtin/checkout.c:1596
+#: builtin/checkout.c:1594
 msgid "-p and --overlay are mutually exclusive"
 msgstr "-p 和 --overlay 互斥"
 
-#: builtin/checkout.c:1633
+#: builtin/checkout.c:1631
 msgid "--track needs a branch name"
 msgstr "--track 需要一個分支名"
 
-#: builtin/checkout.c:1638
+#: builtin/checkout.c:1636
 #, c-format
 msgid "missing branch name; try -%c"
 msgstr "缺少分支名稱,請嘗試 -%c"
 
-#: builtin/checkout.c:1670
+#: builtin/checkout.c:1668
 #, c-format
 msgid "could not resolve %s"
 msgstr "無法解析 %s"
 
-#: builtin/checkout.c:1686
+#: builtin/checkout.c:1684
 msgid "invalid path specification"
 msgstr "無效的路徑規格"
 
-#: builtin/checkout.c:1693
+#: builtin/checkout.c:1691
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "'%s' 不是一個提交,不能基於它建立分支 '%s'"
 
-#: builtin/checkout.c:1697
+#: builtin/checkout.c:1695
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout:--detach 不能接收路徑參數 '%s'"
 
-#: builtin/checkout.c:1706
+#: builtin/checkout.c:1704
 msgid "--pathspec-from-file is incompatible with --detach"
 msgstr "--pathspec-from-file 與 --detach 不相容"
 
-#: builtin/checkout.c:1709 builtin/reset.c:325 builtin/stash.c:1503
+#: builtin/checkout.c:1707 builtin/reset.c:325 builtin/stash.c:1503
 msgid "--pathspec-from-file is incompatible with --patch"
 msgstr "--pathspec-from-file 與 --patch 不相容"
 
-#: builtin/checkout.c:1720
+#: builtin/checkout.c:1718
 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:1725
+#: builtin/checkout.c:1723
 msgid "you must specify path(s) to restore"
 msgstr "您必須指定一個要復原的路徑"
 
-#: builtin/checkout.c:1751 builtin/checkout.c:1753 builtin/checkout.c:1802
-#: builtin/checkout.c:1804 builtin/clone.c:121 builtin/remote.c:170
-#: builtin/remote.c:172 builtin/worktree.c:495 builtin/worktree.c:497
+#: builtin/checkout.c:1749 builtin/checkout.c:1751 builtin/checkout.c:1800
+#: builtin/checkout.c:1802 builtin/clone.c:121 builtin/remote.c:170
+#: builtin/remote.c:172 builtin/submodule--helper.c:2295 builtin/worktree.c:554
+#: builtin/worktree.c:556
 msgid "branch"
 msgstr "分支"
 
-#: builtin/checkout.c:1752
+#: builtin/checkout.c:1750
 msgid "create and checkout a new branch"
 msgstr "建立並檢出一個新的分支"
 
-#: builtin/checkout.c:1754
+#: builtin/checkout.c:1752
 msgid "create/reset and checkout a branch"
 msgstr "建立/重設並檢出一個分支"
 
-#: builtin/checkout.c:1755
+#: builtin/checkout.c:1753
 msgid "create reflog for new branch"
 msgstr "為新的分支建立引用日誌"
 
-#: builtin/checkout.c:1757
+#: builtin/checkout.c:1755
 msgid "second guess 'git checkout <no-such-branch>' (default)"
 msgstr "二次猜測 'git checkout <無此分支>'(預設)"
 
-#: builtin/checkout.c:1758
+#: builtin/checkout.c:1756
 msgid "use overlay mode (default)"
 msgstr "使用疊加模式(預設)"
 
-#: builtin/checkout.c:1803
+#: builtin/checkout.c:1801
 msgid "create and switch to a new branch"
 msgstr "建立並切換一個新分支"
 
-#: builtin/checkout.c:1805
+#: builtin/checkout.c:1803
 msgid "create/reset and switch to a branch"
 msgstr "建立/重設並切換一個分支"
 
-#: builtin/checkout.c:1807
+#: builtin/checkout.c:1805
 msgid "second guess 'git switch <no-such-branch>'"
 msgstr "二次猜測 'git switch <無此分支>'"
 
-#: builtin/checkout.c:1809
+#: builtin/checkout.c:1807
 msgid "throw away local modifications"
 msgstr "捨棄本機修改"
 
-#: builtin/checkout.c:1843
+#: builtin/checkout.c:1841
 msgid "which tree-ish to checkout from"
 msgstr "要檢出哪一個樹"
 
-#: builtin/checkout.c:1845
+#: builtin/checkout.c:1843
 msgid "restore the index"
 msgstr "復原索引"
 
-#: builtin/checkout.c:1847
+#: builtin/checkout.c:1845
 msgid "restore the working tree (default)"
 msgstr "復原工作區(預設)"
 
-#: builtin/checkout.c:1849
+#: builtin/checkout.c:1847
 msgid "ignore unmerged entries"
 msgstr "忽略未合併條目"
 
-#: builtin/checkout.c:1850
+#: builtin/checkout.c:1848
 msgid "use overlay mode"
 msgstr "使用疊加模式"
 
@@ -11977,24 +12081,24 @@
 msgid "remove only ignored files"
 msgstr "只刪除忽略的檔案"
 
-#: builtin/clean.c:931
-msgid "-x and -X cannot be used together"
-msgstr "-x 和 -X 不能同時使用"
-
-#: builtin/clean.c:935
+#: builtin/clean.c:929
 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:938
+#: builtin/clean.c:932
 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
+msgid "-x and -X cannot be used together"
+msgstr "-x 和 -X 不能同時使用"
+
 #: builtin/clone.c:45
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<選項>] [--] <版本庫> [<路徑>]"
@@ -12003,7 +12107,7 @@
 msgid "don't create a checkout"
 msgstr "不建立一個檢出"
 
-#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:536
+#: builtin/clone.c:94 builtin/clone.c:96 builtin/init-db.c:554
 msgid "create a bare repository"
 msgstr "建立一個純版本庫"
 
@@ -12035,11 +12139,11 @@
 msgid "number of submodules cloned in parallel"
 msgstr "並發複製的子模組的數量"
 
-#: builtin/clone.c:111 builtin/init-db.c:533
+#: builtin/clone.c:111 builtin/init-db.c:551
 msgid "template-directory"
 msgstr "範本目錄"
 
-#: builtin/clone.c:112 builtin/init-db.c:534
+#: builtin/clone.c:112 builtin/init-db.c:552
 msgid "directory from which templates will be used"
 msgstr "範本目錄將被使用"
 
@@ -12053,8 +12157,8 @@
 msgid "use --reference only while cloning"
 msgstr "僅在複製時參考 --reference 指向的本機版本庫"
 
-#: builtin/clone.c:119 builtin/column.c:27 builtin/merge-file.c:46
-#: builtin/pack-objects.c:3442 builtin/repack.c:329
+#: builtin/clone.c:119 builtin/column.c:27 builtin/init-db.c:562
+#: builtin/merge-file.c:46 builtin/pack-objects.c:3514 builtin/repack.c:329
 msgid "name"
 msgstr "名稱"
 
@@ -12079,7 +12183,7 @@
 msgid "create a shallow clone of that depth"
 msgstr "建立一個指定深度的淺複製"
 
-#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3431
+#: builtin/clone.c:127 builtin/fetch.c:171 builtin/pack-objects.c:3503
 #: builtin/pull.c:211
 msgid "time"
 msgstr "時間"
@@ -12110,11 +12214,11 @@
 msgid "any cloned submodules will be shallow"
 msgstr "子模組將以淺下載模式複製"
 
-#: builtin/clone.c:137 builtin/init-db.c:542
+#: builtin/clone.c:137 builtin/init-db.c:560
 msgid "gitdir"
 msgstr "git目錄"
 
-#: builtin/clone.c:138 builtin/init-db.c:543
+#: builtin/clone.c:138 builtin/init-db.c:561
 msgid "separate git dir from working tree"
 msgstr "git目錄和工作區分離"
 
@@ -12241,7 +12345,7 @@
 msgid "cannot unlink temporary alternates file"
 msgstr "無法刪除暫時的 alternates 檔案"
 
-#: builtin/clone.c:971 builtin/receive-pack.c:1972
+#: builtin/clone.c:971 builtin/receive-pack.c:1982
 msgid "Too many arguments."
 msgstr "太多參數。"
 
@@ -12258,83 +12362,83 @@
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare 和 --separate-git-dir 選項不相容。"
 
-#: builtin/clone.c:1004
+#: builtin/clone.c:1007
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "版本庫 '%s' 不存在"
 
-#: builtin/clone.c:1010 builtin/fetch.c:1789
+#: builtin/clone.c:1011 builtin/fetch.c:1794
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "深度 %s 不是一個正數"
 
-#: builtin/clone.c:1020
+#: builtin/clone.c:1021
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "目標路徑 '%s' 已經存在,並且不是一個空目錄。"
 
-#: builtin/clone.c:1030
+#: builtin/clone.c:1033
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "工作區 '%s' 已經存在。"
 
-#: builtin/clone.c:1045 builtin/clone.c:1066 builtin/difftool.c:271
-#: builtin/log.c:1886 builtin/worktree.c:295 builtin/worktree.c:327
+#: builtin/clone.c:1048 builtin/clone.c:1069 builtin/difftool.c:271
+#: builtin/log.c:1886 builtin/worktree.c:354 builtin/worktree.c:386
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "不能為 '%s' 建立先導目錄"
 
-#: builtin/clone.c:1050
+#: builtin/clone.c:1053
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "不能建立工作區目錄 '%s'"
 
-#: builtin/clone.c:1070
+#: builtin/clone.c:1073
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "複製到純版本庫 '%s'...\n"
 
-#: builtin/clone.c:1072
+#: builtin/clone.c:1075
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "正複製到 '%s'...\n"
 
-#: builtin/clone.c:1096
+#: builtin/clone.c:1099
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
 msgstr "clone --recursive 和 --reference 以及 --reference-if-able 不相容"
 
-#: builtin/clone.c:1160
+#: builtin/clone.c:1164
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth 在本機複製時被忽略,請改用 file:// 協定。"
 
-#: builtin/clone.c:1162
+#: builtin/clone.c:1166
 msgid "--shallow-since is ignored in local clones; use file:// instead."
 msgstr "--shallow-since 在本機複製時被忽略,請改用 file:// 協定。"
 
-#: builtin/clone.c:1164
+#: builtin/clone.c:1168
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
 msgstr "--shallow-exclude 在本機複製時被忽略,請改用 file:// 協定。"
 
-#: builtin/clone.c:1166
+#: builtin/clone.c:1170
 msgid "--filter is ignored in local clones; use file:// instead."
 msgstr "--filter 在本機複製時被忽略,請改用 file:// 協定。"
 
-#: builtin/clone.c:1169
+#: builtin/clone.c:1173
 msgid "source repository is shallow, ignoring --local"
 msgstr "源版本庫是淺複製,忽略 --local"
 
-#: builtin/clone.c:1174
+#: builtin/clone.c:1178
 msgid "--local is ignored"
 msgstr "--local 被忽略"
 
-#: builtin/clone.c:1249 builtin/clone.c:1257
+#: builtin/clone.c:1262 builtin/clone.c:1270
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "遠端分支 %s 在上游 %s 未發現"
 
-#: builtin/clone.c:1260
+#: builtin/clone.c:1273
 msgid "You appear to have cloned an empty repository."
 msgstr "您似乎複製了一個空版本庫。"
 
@@ -12370,14 +12474,14 @@
 msgid "--command must be the first argument"
 msgstr "--command 必須是第一個參數"
 
-#: builtin/commit-graph.c:11 builtin/commit-graph.c:19
+#: builtin/commit-graph.c:13 builtin/commit-graph.c:21
 msgid ""
 "git commit-graph verify [--object-dir <objdir>] [--shallow] [--[no-]progress]"
 msgstr ""
 "git commit-graph verify [--object-dir <物件目錄>] [--shallow] [--"
 "[no-]progress]"
 
-#: builtin/commit-graph.c:12 builtin/commit-graph.c:24
+#: builtin/commit-graph.c:14 builtin/commit-graph.c:26
 msgid ""
 "git commit-graph write [--object-dir <objdir>] [--append] [--"
 "split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
@@ -12387,80 +12491,89 @@
 "split[=<strategy>]] [--reachable|--stdin-packs|--stdin-commits] [--changed-"
 "paths] [--[no-]progress] <split options>"
 
-#: builtin/commit-graph.c:60
+#: builtin/commit-graph.c:62
 #, c-format
 msgid "could not find object directory matching %s"
 msgstr "找不到符合 %s 的物件目錄"
 
-#: builtin/commit-graph.c:76 builtin/commit-graph.c:152
-#: builtin/commit-graph.c:257 builtin/fetch.c:180 builtin/log.c:1678
+#: builtin/commit-graph.c:78 builtin/commit-graph.c:177
+#: builtin/commit-graph.c:276 builtin/fetch.c:180 builtin/log.c:1678
 msgid "dir"
 msgstr "目錄"
 
-#: builtin/commit-graph.c:77 builtin/commit-graph.c:153
-#: builtin/commit-graph.c:258
+#: builtin/commit-graph.c:79 builtin/commit-graph.c:178
+#: builtin/commit-graph.c:277
 msgid "The object directory to store the graph"
 msgstr "儲存圖形的物件目錄"
 
-#: builtin/commit-graph.c:79
+#: builtin/commit-graph.c:81
 msgid "if the commit-graph is split, only verify the tip file"
 msgstr "如果提交圖形被分割,只驗證頭一個檔案"
 
-#: builtin/commit-graph.c:102
+#: builtin/commit-graph.c:104
 #, c-format
 msgid "Could not open commit-graph '%s'"
 msgstr "無法開啟提交圖形 '%s'"
 
-#: builtin/commit-graph.c:136
+#: builtin/commit-graph.c:138
 #, c-format
 msgid "unrecognized --split argument, %s"
 msgstr "無法識別的 --split 參數,%s"
 
-#: builtin/commit-graph.c:155
-msgid "start walk at all refs"
-msgstr "開始遍歷所有引用"
-
-#: builtin/commit-graph.c:157
-msgid "scan pack-indexes listed by stdin for commits"
-msgstr "從標準輸入中的包索引檔案列表中掃描提交"
-
-#: builtin/commit-graph.c:159
-msgid "start walk at commits listed by stdin"
-msgstr "從標準輸入中的提交開始掃描"
-
-#: builtin/commit-graph.c:161
-msgid "include all commits already in the commit-graph file"
-msgstr "包含 commit-graph 檔案中已有所有提交"
-
-#: builtin/commit-graph.c:163
-msgid "enable computation for changed paths"
-msgstr "啟用已變更路徑的計算"
-
-#: builtin/commit-graph.c:166
-msgid "allow writing an incremental commit-graph file"
-msgstr "允許寫一個增量提交圖形檔案"
-
-#: builtin/commit-graph.c:170
-msgid "maximum number of commits in a non-base split commit-graph"
-msgstr "在非基本分割提交圖形中的最大提交數"
-
-#: builtin/commit-graph.c:172
-msgid "maximum ratio between two levels of a split commit-graph"
-msgstr "一個分割提交圖形的兩個級別之間的最大比率"
-
-#: builtin/commit-graph.c:174
-msgid "only expire files older than a given date-time"
-msgstr "只將舊於指定日期與時間的檔案設為過期"
-
-#: builtin/commit-graph.c:190
-msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
-msgstr "不能同時使用 --reachable、--stdin-commits 或 --stdin-packs"
-
-#: builtin/commit-graph.c:229
+#: builtin/commit-graph.c:151
 #, c-format
 msgid "unexpected non-hex object ID: %s"
 msgstr "非期望的非十六進位物件 ID:%s"
 
+#: builtin/commit-graph.c:156
+#, c-format
+msgid "invalid object: %s"
+msgstr "物件無效:%s"
+
+#: builtin/commit-graph.c:180
+msgid "start walk at all refs"
+msgstr "開始遍歷所有引用"
+
+#: builtin/commit-graph.c:182
+msgid "scan pack-indexes listed by stdin for commits"
+msgstr "從標準輸入中的包索引檔案列表中掃描提交"
+
+#: builtin/commit-graph.c:184
+msgid "start walk at commits listed by stdin"
+msgstr "從標準輸入中的提交開始掃描"
+
+#: builtin/commit-graph.c:186
+msgid "include all commits already in the commit-graph file"
+msgstr "包含 commit-graph 檔案中已有所有提交"
+
+#: builtin/commit-graph.c:188
+msgid "enable computation for changed paths"
+msgstr "啟用已變更路徑的計算"
+
+#: builtin/commit-graph.c:191
+msgid "allow writing an incremental commit-graph file"
+msgstr "允許寫一個增量提交圖形檔案"
+
+#: builtin/commit-graph.c:195
+msgid "maximum number of commits in a non-base split commit-graph"
+msgstr "在非基本分割提交圖形中的最大提交數"
+
+#: builtin/commit-graph.c:197
+msgid "maximum ratio between two levels of a split commit-graph"
+msgstr "一個分割提交圖形的兩個級別之間的最大比率"
+
+#: builtin/commit-graph.c:199
+msgid "only expire files older than a given date-time"
+msgstr "只將舊於指定日期與時間的檔案設為過期"
+
+#: builtin/commit-graph.c:215
+msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
+msgstr "不能同時使用 --reachable、--stdin-commits 或 --stdin-packs"
+
+#: builtin/commit-graph.c:245
+msgid "Collecting commits from input"
+msgstr "正在從輸入收集提交"
+
 #: builtin/commit-tree.c:18
 msgid ""
 "git commit-tree [(-p <parent>)...] [-S[<keyid>]] [(-m <message>)...] [(-F "
@@ -12855,7 +12968,7 @@
 msgstr "版本"
 
 #: builtin/commit.c:1376 builtin/commit.c:1535 builtin/push.c:549
-#: builtin/worktree.c:646
+#: builtin/worktree.c:722
 msgid "machine-readable output"
 msgstr "機器可讀的輸出"
 
@@ -12868,8 +12981,8 @@
 msgstr "條目以 NUL 字元結尾"
 
 #: builtin/commit.c:1384 builtin/commit.c:1388 builtin/commit.c:1543
-#: builtin/fast-export.c:1153 builtin/fast-export.c:1156
-#: builtin/fast-export.c:1159 builtin/rebase.c:1392 parse-options.h:336
+#: builtin/fast-export.c:1199 builtin/fast-export.c:1202
+#: builtin/fast-export.c:1205 builtin/rebase.c:1392 parse-options.h:336
 msgid "mode"
 msgstr "模式"
 
@@ -13544,35 +13657,45 @@
 msgid "--broken is incompatible with commit-ishes"
 msgstr "--broken 與提交號不相容"
 
-#: builtin/diff.c:84
+#: builtin/diff.c:91
 #, c-format
 msgid "'%s': not a regular file or symlink"
 msgstr "'%s':不是一個正規檔案或符號連結"
 
-#: builtin/diff.c:235
+#: builtin/diff.c:242
 #, c-format
 msgid "invalid option: %s"
 msgstr "無效選項:%s"
 
-#: builtin/diff.c:350
+#: builtin/diff.c:359
+#, c-format
+msgid "%s...%s: no merge base"
+msgstr "%s...%s: 無合併基底"
+
+#: builtin/diff.c:469
 msgid "Not a git repository"
 msgstr "不是一個 git 版本庫"
 
-#: builtin/diff.c:394
+#: builtin/diff.c:514
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "提供了無效物件 '%s'。"
 
-#: builtin/diff.c:403
+#: builtin/diff.c:525
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "提供了超過兩個資料物件:'%s'"
 
-#: builtin/diff.c:408
+#: builtin/diff.c:530
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "無法處理的物件 '%s'。"
 
+#: builtin/diff.c:564
+#, c-format
+msgid "%s...%s: multiple merge bases, using %s"
+msgstr "%s...%s:多個合併基底,使用 %s"
+
 #: builtin/difftool.c:30
 msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
 msgstr "git difftool [<選項>] [<提交> [<提交>]] [--] [<路徑>...]"
@@ -13717,82 +13840,103 @@
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-opts]"
 
-#: builtin/fast-export.c:853
+#: builtin/fast-export.c:868
 msgid "Error: Cannot export nested tags unless --mark-tags is specified."
 msgstr "錯誤:除非指定 --mark-tags,否則無法匯出嵌套標籤。"
 
-#: builtin/fast-export.c:1152
+#: builtin/fast-export.c:1178
+msgid "--anonymize-map token cannot be empty"
+msgstr "--anonymize-map 的鍵不能空白"
+
+#: builtin/fast-export.c:1198
 msgid "show progress after <n> objects"
 msgstr "在 <n> 個物件之後顯示進度"
 
-#: builtin/fast-export.c:1154
+#: builtin/fast-export.c:1200
 msgid "select handling of signed tags"
 msgstr "選擇如何處理簽名標籤"
 
-#: builtin/fast-export.c:1157
+#: builtin/fast-export.c:1203
 msgid "select handling of tags that tag filtered objects"
 msgstr "選擇當標籤指向被過濾物件時該標籤的處理方式"
 
-#: builtin/fast-export.c:1160
+#: builtin/fast-export.c:1206
 msgid "select handling of commit messages in an alternate encoding"
 msgstr "選擇使用備用編碼處理提交說明"
 
-#: builtin/fast-export.c:1163
+#: builtin/fast-export.c:1209
 msgid "Dump marks to this file"
 msgstr "把標記儲存到這個檔案"
 
-#: builtin/fast-export.c:1165
+#: builtin/fast-export.c:1211
 msgid "Import marks from this file"
 msgstr "從這個檔案匯入標記"
 
-#: builtin/fast-export.c:1169
+#: builtin/fast-export.c:1215
 msgid "Import marks from this file if it exists"
 msgstr "從該檔案匯入標記(如果存在的話)"
 
-#: builtin/fast-export.c:1171
+#: builtin/fast-export.c:1217
 msgid "Fake a tagger when tags lack one"
 msgstr "當標籤缺少標記者欄位時,假裝提供一個"
 
-#: builtin/fast-export.c:1173
+#: builtin/fast-export.c:1219
 msgid "Output full tree for each commit"
 msgstr "每次提交都輸出整個樹"
 
-#: builtin/fast-export.c:1175
+#: builtin/fast-export.c:1221
 msgid "Use the done feature to terminate the stream"
 msgstr "使用 done 功能來終止流"
 
-#: builtin/fast-export.c:1176
+#: builtin/fast-export.c:1222
 msgid "Skip output of blob data"
 msgstr "跳過資料物件的輸出"
 
-#: builtin/fast-export.c:1177 builtin/log.c:1724
+#: builtin/fast-export.c:1223 builtin/log.c:1724
 msgid "refspec"
 msgstr "參照規格"
 
-#: builtin/fast-export.c:1178
+#: builtin/fast-export.c:1224
 msgid "Apply refspec to exported refs"
 msgstr "對匯出的引用應用引用規格"
 
-#: builtin/fast-export.c:1179
+#: builtin/fast-export.c:1225
 msgid "anonymize output"
 msgstr "匿名輸出"
 
-#: builtin/fast-export.c:1181
+#: builtin/fast-export.c:1226
+msgid "from:to"
+msgstr "from:to"
+
+#: builtin/fast-export.c:1227
+msgid "convert <from> to <to> in anonymized output"
+msgstr "在匿名輸出中將 <from> 轉換為 <to>"
+
+#: builtin/fast-export.c:1230
 msgid "Reference parents which are not in fast-export stream by object id"
 msgstr "引用父物件 ID 不在 fast-export 流中"
 
-#: builtin/fast-export.c:1183
+#: builtin/fast-export.c:1232
 msgid "Show original object ids of blobs/commits"
 msgstr "顯示資料物件/提交的原始物件 ID"
 
-#: builtin/fast-export.c:1185
+#: builtin/fast-export.c:1234
 msgid "Label tags with mark ids"
 msgstr "對帶有標記 ID 的標籤做標記"
 
-#: builtin/fast-export.c:1220
+#: builtin/fast-export.c:1257
+msgid "--anonymize-map without --anonymize does not make sense"
+msgstr "缺少 --anonymize 的 --anonymize-map 沒有意義"
+
+#: builtin/fast-export.c:1272
 msgid "Cannot pass both --import-marks and --import-marks-if-exists"
 msgstr "不能同時傳遞參數 --import-marks 和 --import-marks-if-exists"
 
+#: builtin/fetch-pack.c:245
+#, c-format
+msgid "Lockfile created but not reported: %s"
+msgstr "已建立鎖定檔案,但尚未回報:%s"
+
 #: builtin/fetch.c:35
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<選項>] [<版本庫> [<引用規格>...]]"
@@ -14113,40 +14257,40 @@
 msgid "You need to specify a tag name."
 msgstr "您需要指定一個標籤名稱。"
 
-#: builtin/fetch.c:1773
+#: builtin/fetch.c:1778
 msgid "Negative depth in --deepen is not supported"
 msgstr "--deepen 不支援負數深度"
 
-#: builtin/fetch.c:1775
+#: builtin/fetch.c:1780
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen 和 --depth 是互斥的"
 
-#: builtin/fetch.c:1780
+#: builtin/fetch.c:1785
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth 和 --unshallow 不能同時使用"
 
-#: builtin/fetch.c:1782
+#: builtin/fetch.c:1787
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "對於一個完整的版本庫,參數 --unshallow 沒有意義"
 
-#: builtin/fetch.c:1798
+#: builtin/fetch.c:1800
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all 不能帶一個版本庫參數"
 
-#: builtin/fetch.c:1800
+#: builtin/fetch.c:1802
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all 帶引用規格沒有任何意義"
 
-#: builtin/fetch.c:1809
+#: builtin/fetch.c:1811
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "沒有這樣的遠端或遠端組:%s"
 
-#: builtin/fetch.c:1816
+#: builtin/fetch.c:1818
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "取得組並指定引用規格沒有意義"
 
-#: builtin/fetch.c:1834
+#: builtin/fetch.c:1836
 msgid ""
 "--filter can only be used with the remote configured in extensions."
 "partialclone"
@@ -14592,8 +14736,8 @@
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1730
-#: builtin/pack-objects.c:2855
+#: builtin/grep.c:287 builtin/index-pack.c:1537 builtin/index-pack.c:1727
+#: builtin/pack-objects.c:2904
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "沒有執行緒支援,忽略 %s"
@@ -14823,11 +14967,11 @@
 msgid "invalid option combination, ignoring --threads"
 msgstr "無效的選項組合,忽略 --threads"
 
-#: builtin/grep.c:1084 builtin/pack-objects.c:3548
+#: builtin/grep.c:1084 builtin/pack-objects.c:3623
 msgid "no threads support, ignoring --threads"
 msgstr "沒有執行緒支援,忽略 --threads"
 
-#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2852
+#: builtin/grep.c:1087 builtin/index-pack.c:1534 builtin/pack-objects.c:2901
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "指定的執行緒數無效(%d)"
@@ -15027,7 +15171,7 @@
 msgid "used more bytes than were available"
 msgstr "用掉了超過可用的位元組"
 
-#: builtin/index-pack.c:288 builtin/pack-objects.c:607
+#: builtin/index-pack.c:288 builtin/pack-objects.c:618
 msgid "pack too large for current definition of off_t"
 msgstr "包太大超過了目前 off_t 的定義"
 
@@ -15097,8 +15241,8 @@
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "發現 %s 出現 SHA1 衝突!"
 
-#: builtin/index-pack.c:738 builtin/pack-objects.c:159
-#: builtin/pack-objects.c:219 builtin/pack-objects.c:314
+#: builtin/index-pack.c:738 builtin/pack-objects.c:170
+#: builtin/pack-objects.c:230 builtin/pack-objects.c:325
 #, c-format
 msgid "unable to read %s"
 msgstr "不能讀 %s"
@@ -15159,7 +15303,7 @@
 msgid "Resolving deltas"
 msgstr "處理 delta 中"
 
-#: builtin/index-pack.c:1208 builtin/pack-objects.c:2616
+#: builtin/index-pack.c:1208 builtin/pack-objects.c:2665
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "不能建立執行緒:%s"
@@ -15222,56 +15366,65 @@
 msgid "cannot store index file"
 msgstr "無法儲存索引檔案"
 
-#: builtin/index-pack.c:1528 builtin/pack-objects.c:2863
+#: builtin/index-pack.c:1528 builtin/pack-objects.c:2912
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "壞的 pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1596
+#: builtin/index-pack.c:1592
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "無法開啟現存包檔案 '%s'"
 
-#: builtin/index-pack.c:1598
+#: builtin/index-pack.c:1594
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "無法為 %s 開啟包索引檔案"
 
-#: builtin/index-pack.c:1646
+#: builtin/index-pack.c:1642
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "非 delta:%d 個物件"
 
-#: builtin/index-pack.c:1653
+#: builtin/index-pack.c:1649
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "鏈長 = %d: %lu 物件"
 
-#: builtin/index-pack.c:1692
+#: builtin/index-pack.c:1689
 msgid "Cannot come back to cwd"
 msgstr "無法返回目前工作目錄"
 
-#: builtin/index-pack.c:1741 builtin/index-pack.c:1744
-#: builtin/index-pack.c:1760 builtin/index-pack.c:1764
+#: builtin/index-pack.c:1738 builtin/index-pack.c:1741
+#: builtin/index-pack.c:1757 builtin/index-pack.c:1761
 #, c-format
 msgid "bad %s"
 msgstr "錯誤選項 %s"
 
-#: builtin/index-pack.c:1780
+#: builtin/index-pack.c:1767 builtin/init-db.c:392 builtin/init-db.c:621
+#, c-format
+msgid "unknown hash algorithm '%s'"
+msgstr "未知的「%s」雜湊算法"
+
+#: builtin/index-pack.c:1782
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin 不能和 --stdin 同時使用"
 
-#: builtin/index-pack.c:1782
+#: builtin/index-pack.c:1784
 msgid "--stdin requires a git repository"
 msgstr "--stdin 需要一個 git 版本庫"
 
-#: builtin/index-pack.c:1788
+#: builtin/index-pack.c:1786
+msgid "--object-format cannot be used with --stdin"
+msgstr "--object-format 不能和 --stdin 同時使用"
+
+#: builtin/index-pack.c:1792
 msgid "--verify with no packfile name given"
 msgstr "--verify 沒有提供 packfile 名稱參數"
 
-#: builtin/index-pack.c:1836 builtin/unpack-objects.c:582
+#: builtin/index-pack.c:1840 builtin/unpack-objects.c:582
 msgid "fsck error in pack objects"
 msgstr "在打包物件中 fsck 檢查發生錯誤"
 
@@ -15315,51 +15468,56 @@
 msgid "not copying templates from '%s': %s"
 msgstr "沒有從 '%s' 複製範本:%s"
 
-#: builtin/init-db.c:356
+#: builtin/init-db.c:276
+#, c-format
+msgid "invalid initial branch name: '%s'"
+msgstr "無效的初始分支名稱:'%s'"
+
+#: builtin/init-db.c:368
 #, c-format
 msgid "unable to handle file type %d"
 msgstr "不能處理 %d 類型的檔案"
 
-#: builtin/init-db.c:359
+#: builtin/init-db.c:371
 #, c-format
 msgid "unable to move %s to %s"
 msgstr "不能移動 %s 至 %s"
 
-#: builtin/init-db.c:374
+#: builtin/init-db.c:386
 msgid "attempt to reinitialize repository with different hash"
 msgstr "嘗試以不同的雜湊值重新初始化版本庫"
 
-#: builtin/init-db.c:380 builtin/init-db.c:601
-#, c-format
-msgid "unknown hash algorithm '%s'"
-msgstr "未知的「%s」雜湊算法"
-
-#: builtin/init-db.c:397 builtin/init-db.c:400
+#: builtin/init-db.c:410 builtin/init-db.c:413
 #, c-format
 msgid "%s already exists"
 msgstr "%s 已經存在"
 
-#: builtin/init-db.c:458
+#: builtin/init-db.c:444
+#, c-format
+msgid "re-init: ignored --initial-branch=%s"
+msgstr "re-init: 忽略 --initial-branch=%s"
+
+#: builtin/init-db.c:475
 #, c-format
 msgid "Reinitialized existing shared Git repository in %s%s\n"
 msgstr "重新初始化已存在的共享 Git 版本庫於 %s%s\n"
 
-#: builtin/init-db.c:459
+#: builtin/init-db.c:476
 #, c-format
 msgid "Reinitialized existing Git repository in %s%s\n"
 msgstr "重新初始化已存在的 Git 版本庫於 %s%s\n"
 
-#: builtin/init-db.c:463
+#: builtin/init-db.c:480
 #, c-format
 msgid "Initialized empty shared Git repository in %s%s\n"
 msgstr "已初始化空的共享 Git 版本庫於 %s%s\n"
 
-#: builtin/init-db.c:464
+#: builtin/init-db.c:481
 #, c-format
 msgid "Initialized empty Git repository in %s%s\n"
 msgstr "已初始化空的 Git 版本庫於 %s%s\n"
 
-#: builtin/init-db.c:513
+#: builtin/init-db.c:530
 msgid ""
 "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
 "shared[=<permissions>]] [<directory>]"
@@ -15367,40 +15525,44 @@
 "git init [-q | --quiet] [--bare] [--template=<範本目錄>] [--shared[=<權限>]] "
 "[<目錄>]"
 
-#: builtin/init-db.c:538
+#: builtin/init-db.c:556
 msgid "permissions"
 msgstr "權限"
 
-#: builtin/init-db.c:539
+#: builtin/init-db.c:557
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "指定 git 版本庫是多個使用者之間共享的"
 
-#: builtin/init-db.c:544
+#: builtin/init-db.c:563
+msgid "override the name of the initial branch"
+msgstr "覆蓋初始分支的名稱"
+
+#: builtin/init-db.c:564
 msgid "hash"
 msgstr "雜湊"
 
-#: builtin/init-db.c:545
+#: builtin/init-db.c:565 builtin/show-index.c:22
 msgid "specify the hash algorithm to use"
 msgstr "指定要使用的雜湊算法"
 
-#: builtin/init-db.c:578 builtin/init-db.c:583
+#: builtin/init-db.c:598 builtin/init-db.c:603
 #, c-format
 msgid "cannot mkdir %s"
 msgstr "不能建立目錄 %s"
 
-#: builtin/init-db.c:587
+#: builtin/init-db.c:607
 #, c-format
 msgid "cannot chdir to %s"
 msgstr "不能切換目錄到 %s"
 
-#: builtin/init-db.c:614
+#: builtin/init-db.c:634
 #, 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:642
+#: builtin/init-db.c:662
 #, c-format
 msgid "Cannot access work tree '%s'"
 msgstr "不能存取工作區 '%s'"
@@ -17119,7 +17281,7 @@
 msgid "read object names from the standard input"
 msgstr "從標準輸入讀取物件名稱"
 
-#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:164
+#: builtin/notes.c:954 builtin/prune.c:132 builtin/worktree.c:220
 msgid "do not remove, show only"
 msgstr "不刪除,只顯示"
 
@@ -17150,101 +17312,116 @@
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr "git pack-objects [<選項>...] <前綴名稱> [< <引用列表> | < <物件列表>]"
 
-#: builtin/pack-objects.c:431
+#: builtin/pack-objects.c:442
 #, c-format
 msgid "bad packed object CRC for %s"
 msgstr "%s 錯的包物件 CRC"
 
-#: builtin/pack-objects.c:442
+#: builtin/pack-objects.c:453
 #, c-format
 msgid "corrupt packed object for %s"
 msgstr "%s 損壞的包物件"
 
-#: builtin/pack-objects.c:573
+#: builtin/pack-objects.c:584
 #, c-format
 msgid "recursive delta detected for object %s"
 msgstr "發現物件 %s 遞迴 delta"
 
-#: builtin/pack-objects.c:784
+#: builtin/pack-objects.c:795
 #, c-format
 msgid "ordered %u objects, expected %<PRIu32>"
 msgstr "排序了 %u 個物件,預期 %<PRIu32> 個"
 
-#: builtin/pack-objects.c:973
+#: builtin/pack-objects.c:1003
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr "停用 bitmap 寫入,因為 pack.packSizeLimit 設定使得包被切分為多個"
 
-#: builtin/pack-objects.c:986
+#: builtin/pack-objects.c:1016
 msgid "Writing objects"
 msgstr "寫入物件中"
 
-#: builtin/pack-objects.c:1047 builtin/update-index.c:90
+#: builtin/pack-objects.c:1077 builtin/update-index.c:90
 #, c-format
 msgid "failed to stat %s"
 msgstr "對 %s 呼叫 stat 失敗"
 
-#: builtin/pack-objects.c:1100
+#: builtin/pack-objects.c:1130
 #, c-format
 msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
 msgstr "寫入 %<PRIu32> 個物件而預期 %<PRIu32> 個"
 
-#: builtin/pack-objects.c:1298
+#: builtin/pack-objects.c:1347
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "停用 bitmap 寫入,因為一些物件將不會被打包"
 
-#: builtin/pack-objects.c:1725
+#: builtin/pack-objects.c:1774
 #, c-format
 msgid "delta base offset overflow in pack for %s"
 msgstr "%s 壓縮中 delta 基準位移越界"
 
-#: builtin/pack-objects.c:1734
+#: builtin/pack-objects.c:1783
 #, c-format
 msgid "delta base offset out of bound for %s"
 msgstr "%s 的 delta 基準位移越界"
 
-#: builtin/pack-objects.c:2005
+#: builtin/pack-objects.c:2054
 msgid "Counting objects"
 msgstr "物件計數中"
 
-#: builtin/pack-objects.c:2150
+#: builtin/pack-objects.c:2199
 #, c-format
 msgid "unable to parse object header of %s"
 msgstr "無法解析物件 %s 標頭訊息"
 
-#: builtin/pack-objects.c:2220 builtin/pack-objects.c:2236
-#: builtin/pack-objects.c:2246
+#: builtin/pack-objects.c:2269 builtin/pack-objects.c:2285
+#: builtin/pack-objects.c:2295
 #, c-format
 msgid "object %s cannot be read"
 msgstr "物件 %s 無法讀取"
 
-#: builtin/pack-objects.c:2223 builtin/pack-objects.c:2250
+#: builtin/pack-objects.c:2272 builtin/pack-objects.c:2299
 #, c-format
 msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
 msgstr "物件 %s 不一致的物件長度(%<PRIuMAX> vs %<PRIuMAX>)"
 
-#: builtin/pack-objects.c:2260
+#: builtin/pack-objects.c:2309
 msgid "suboptimal pack - out of memory"
 msgstr "次優(suboptimal)打包 - 記憶體不足"
 
-#: builtin/pack-objects.c:2575
+#: builtin/pack-objects.c:2624
 #, c-format
 msgid "Delta compression using up to %d threads"
 msgstr "使用 %d 個執行緒進行壓縮"
 
-#: builtin/pack-objects.c:2714
+#: builtin/pack-objects.c:2763
 #, c-format
 msgid "unable to pack objects reachable from tag %s"
 msgstr "無法為標籤 %s 壓縮物件"
 
-#: builtin/pack-objects.c:2802
+#: builtin/pack-objects.c:2851
 msgid "Compressing objects"
 msgstr "壓縮物件中"
 
-#: builtin/pack-objects.c:2808
+#: builtin/pack-objects.c:2857
 msgid "inconsistency with delta count"
 msgstr "不一致的差異計數"
 
-#: builtin/pack-objects.c:2889
+#: builtin/pack-objects.c:2929
+#, c-format
+msgid ""
+"value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
+"hash> <uri>' (got '%s')"
+msgstr ""
+"uploadpack.blobpackfileuri 的值格式必須為 '<object-hash> <pack-hash> "
+"<uri>' (收到 '%s')"
+
+#: builtin/pack-objects.c:2932
+#, c-format
+msgid ""
+"object already configured in another uploadpack.blobpackfileuri (got '%s')"
+msgstr "物件已經在其他 uploadpack.blobpackfileuri 設定過 (收到 '%s')"
+
+#: builtin/pack-objects.c:2961
 #, c-format
 msgid ""
 "expected edge object ID, got garbage:\n"
@@ -17253,7 +17430,7 @@
 "預期邊界物件(edge object)ID,卻得到垃圾資料:\n"
 " %s"
 
-#: builtin/pack-objects.c:2895
+#: builtin/pack-objects.c:2967
 #, c-format
 msgid ""
 "expected object ID, got garbage:\n"
@@ -17262,226 +17439,234 @@
 "預期物件 ID,卻得到垃圾資料:\n"
 " %s"
 
-#: builtin/pack-objects.c:2993
+#: builtin/pack-objects.c:3065
 msgid "invalid value for --missing"
 msgstr "選項 --missing 的值無效"
 
-#: builtin/pack-objects.c:3052 builtin/pack-objects.c:3160
+#: builtin/pack-objects.c:3124 builtin/pack-objects.c:3232
 msgid "cannot open pack index"
 msgstr "無法開啟包檔案索引"
 
-#: builtin/pack-objects.c:3083
+#: builtin/pack-objects.c:3155
 #, c-format
 msgid "loose object at %s could not be examined"
 msgstr "無法檢查 %s 處的鬆散物件"
 
-#: builtin/pack-objects.c:3168
+#: builtin/pack-objects.c:3240
 msgid "unable to force loose object"
 msgstr "無法強制鬆散物件"
 
-#: builtin/pack-objects.c:3261
+#: builtin/pack-objects.c:3333
 #, c-format
 msgid "not a rev '%s'"
 msgstr "不是一個版本 '%s'"
 
-#: builtin/pack-objects.c:3264
+#: builtin/pack-objects.c:3336
 #, c-format
 msgid "bad revision '%s'"
 msgstr "壞的版本 '%s'"
 
-#: builtin/pack-objects.c:3289
+#: builtin/pack-objects.c:3361
 msgid "unable to add recent objects"
 msgstr "無法新增最近的物件"
 
-#: builtin/pack-objects.c:3342
+#: builtin/pack-objects.c:3414
 #, c-format
 msgid "unsupported index version %s"
 msgstr "不支援的索引版本 %s"
 
-#: builtin/pack-objects.c:3346
+#: builtin/pack-objects.c:3418
 #, c-format
 msgid "bad index version '%s'"
 msgstr "壞的索引版本 '%s'"
 
-#: builtin/pack-objects.c:3384
+#: builtin/pack-objects.c:3456
 msgid "<version>[,<offset>]"
 msgstr "<版本>[,<位移>]"
 
-#: builtin/pack-objects.c:3385
+#: builtin/pack-objects.c:3457
 msgid "write the pack index file in the specified idx format version"
 msgstr "用指定的 idx 格式版本來寫包索引檔案"
 
-#: builtin/pack-objects.c:3388
+#: builtin/pack-objects.c:3460
 msgid "maximum size of each output pack file"
 msgstr "每個輸出包的最大尺寸"
 
-#: builtin/pack-objects.c:3390
+#: builtin/pack-objects.c:3462
 msgid "ignore borrowed objects from alternate object store"
 msgstr "忽略從備用物件儲存裡借用物件"
 
-#: builtin/pack-objects.c:3392
+#: builtin/pack-objects.c:3464
 msgid "ignore packed objects"
 msgstr "忽略包物件"
 
-#: builtin/pack-objects.c:3394
+#: builtin/pack-objects.c:3466
 msgid "limit pack window by objects"
 msgstr "限制打包視窗的物件數"
 
-#: builtin/pack-objects.c:3396
+#: builtin/pack-objects.c:3468
 msgid "limit pack window by memory in addition to object limit"
 msgstr "除物件數量限制外設定打包視窗的記憶體限制"
 
-#: builtin/pack-objects.c:3398
+#: builtin/pack-objects.c:3470
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "打包允許的 delta 鏈的最大長度"
 
-#: builtin/pack-objects.c:3400
+#: builtin/pack-objects.c:3472
 msgid "reuse existing deltas"
 msgstr "重用已存在的 deltas"
 
-#: builtin/pack-objects.c:3402
+#: builtin/pack-objects.c:3474
 msgid "reuse existing objects"
 msgstr "重用已存在的物件"
 
-#: builtin/pack-objects.c:3404
+#: builtin/pack-objects.c:3476
 msgid "use OFS_DELTA objects"
 msgstr "使用 OFS_DELTA 物件"
 
-#: builtin/pack-objects.c:3406
+#: builtin/pack-objects.c:3478
 msgid "use threads when searching for best delta matches"
 msgstr "使用執行緒查詢最佳 delta 符合"
 
-#: builtin/pack-objects.c:3408
+#: builtin/pack-objects.c:3480
 msgid "do not create an empty pack output"
 msgstr "不建立空的包輸出"
 
-#: builtin/pack-objects.c:3410
+#: builtin/pack-objects.c:3482
 msgid "read revision arguments from standard input"
 msgstr "從標準輸入讀取版本號參數"
 
-#: builtin/pack-objects.c:3412
+#: builtin/pack-objects.c:3484
 msgid "limit the objects to those that are not yet packed"
 msgstr "限制那些尚未打包的物件"
 
-#: builtin/pack-objects.c:3415
+#: builtin/pack-objects.c:3487
 msgid "include objects reachable from any reference"
 msgstr "包括可以從任何引用存取到的物件"
 
-#: builtin/pack-objects.c:3418
+#: builtin/pack-objects.c:3490
 msgid "include objects referred by reflog entries"
 msgstr "包括被引用日誌引用到的物件"
 
-#: builtin/pack-objects.c:3421
+#: builtin/pack-objects.c:3493
 msgid "include objects referred to by the index"
 msgstr "包括被索引引用到的物件"
 
-#: builtin/pack-objects.c:3424
+#: builtin/pack-objects.c:3496
 msgid "output pack to stdout"
 msgstr "輸出包到標準輸出"
 
-#: builtin/pack-objects.c:3426
+#: builtin/pack-objects.c:3498
 msgid "include tag objects that refer to objects to be packed"
 msgstr "包括那些引用了待打包物件的標籤物件"
 
-#: builtin/pack-objects.c:3428
+#: builtin/pack-objects.c:3500
 msgid "keep unreachable objects"
 msgstr "維持無法取得的物件"
 
-#: builtin/pack-objects.c:3430
+#: builtin/pack-objects.c:3502
 msgid "pack loose unreachable objects"
 msgstr "打包鬆散的無法取得物件"
 
-#: builtin/pack-objects.c:3432
+#: builtin/pack-objects.c:3504
 msgid "unpack unreachable objects newer than <time>"
 msgstr "將比提供 <時間> 新的無法存取的物件解包"
 
-#: builtin/pack-objects.c:3435
+#: builtin/pack-objects.c:3507
 msgid "use the sparse reachability algorithm"
 msgstr "使用稀疏可以取得性演算法"
 
-#: builtin/pack-objects.c:3437
+#: builtin/pack-objects.c:3509
 msgid "create thin packs"
 msgstr "建立精簡包"
 
-#: builtin/pack-objects.c:3439
+#: builtin/pack-objects.c:3511
 msgid "create packs suitable for shallow fetches"
 msgstr "建立適合淺複製版本庫取得的包"
 
-#: builtin/pack-objects.c:3441
+#: builtin/pack-objects.c:3513
 msgid "ignore packs that have companion .keep file"
 msgstr "忽略配有 .keep 檔案的包"
 
-#: builtin/pack-objects.c:3443
+#: builtin/pack-objects.c:3515
 msgid "ignore this pack"
 msgstr "忽略該 pack"
 
-#: builtin/pack-objects.c:3445
+#: builtin/pack-objects.c:3517
 msgid "pack compression level"
 msgstr "打包壓縮級別"
 
-#: builtin/pack-objects.c:3447
+#: builtin/pack-objects.c:3519
 msgid "do not hide commits by grafts"
 msgstr "顯示被移植隱藏的提交"
 
-#: builtin/pack-objects.c:3449
+#: builtin/pack-objects.c:3521
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr "使用 bitmap 索引(如果有的話)以提高物件計數時的速度"
 
-#: builtin/pack-objects.c:3451
+#: builtin/pack-objects.c:3523
 msgid "write a bitmap index together with the pack index"
 msgstr "在建立包索引的同時建立 bitmap 索引"
 
-#: builtin/pack-objects.c:3455
+#: builtin/pack-objects.c:3527
 msgid "write a bitmap index if possible"
 msgstr "如果可能,寫 bitmap 索引"
 
-#: builtin/pack-objects.c:3459
+#: builtin/pack-objects.c:3531
 msgid "handling for missing objects"
 msgstr "處理遺失的物件"
 
-#: builtin/pack-objects.c:3462
+#: builtin/pack-objects.c:3534
 msgid "do not pack objects in promisor packfiles"
 msgstr "不要打包 promisor packfile 中的物件"
 
-#: builtin/pack-objects.c:3464
+#: builtin/pack-objects.c:3536
 msgid "respect islands during delta compression"
 msgstr "在增量壓縮時參考資料島"
 
-#: builtin/pack-objects.c:3493
+#: builtin/pack-objects.c:3538
+msgid "protocol"
+msgstr "通訊協定"
+
+#: builtin/pack-objects.c:3539
+msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
+msgstr "排除任何設定過,使用此通訊協定的 uploadpack.blobpackfileuri"
+
+#: builtin/pack-objects.c:3568
 #, c-format
 msgid "delta chain depth %d is too deep, forcing %d"
 msgstr "增量鏈深度 %d 太深了,強制為 %d"
 
-#: builtin/pack-objects.c:3498
+#: builtin/pack-objects.c:3573
 #, c-format
 msgid "pack.deltaCacheLimit is too high, forcing %d"
 msgstr "設定 pack.deltaCacheLimit 太高了,強制為 %d"
 
-#: builtin/pack-objects.c:3552
+#: builtin/pack-objects.c:3627
 msgid "--max-pack-size cannot be used to build a pack for transfer"
 msgstr "不能使用 --max-pack-size 來組建傳輸用的包檔案"
 
-#: builtin/pack-objects.c:3554
+#: builtin/pack-objects.c:3629
 msgid "minimum pack size limit is 1 MiB"
 msgstr "最小的包檔案大小是 1 MiB"
 
-#: builtin/pack-objects.c:3559
+#: builtin/pack-objects.c:3634
 msgid "--thin cannot be used to build an indexable pack"
 msgstr "--thin 不能用於建立一個可索引包"
 
-#: builtin/pack-objects.c:3562
+#: builtin/pack-objects.c:3637
 msgid "--keep-unreachable and --unpack-unreachable are incompatible"
 msgstr "--keep-unreachable 和 --unpack-unreachable 不相容"
 
-#: builtin/pack-objects.c:3568
+#: builtin/pack-objects.c:3643
 msgid "cannot use --filter without --stdout"
 msgstr "不能在沒有 --stdout 的情況下使用 --filter"
 
-#: builtin/pack-objects.c:3628
+#: builtin/pack-objects.c:3703
 msgid "Enumerating objects"
 msgstr "枚舉物件"
 
-#: builtin/pack-objects.c:3658
+#: builtin/pack-objects.c:3734
 #, c-format
 msgid ""
 "Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
@@ -18743,7 +18928,7 @@
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <版本庫目錄>"
 
-#: builtin/receive-pack.c:843
+#: builtin/receive-pack.c:844
 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"
@@ -18769,7 +18954,7 @@
 "若要封鎖此訊息且保持預設行為,設定 'receive.denyCurrentBranch'\n"
 "設定變數為 'refuse'。"
 
-#: builtin/receive-pack.c:863
+#: builtin/receive-pack.c:864
 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"
@@ -18788,11 +18973,11 @@
 "\n"
 "若要封鎖此訊息,您可以設定它為 'refuse'。"
 
-#: builtin/receive-pack.c:1960
+#: builtin/receive-pack.c:1970
 msgid "quiet"
 msgstr "靜默模式"
 
-#: builtin/receive-pack.c:1974
+#: builtin/receive-pack.c:1984
 msgid "You must specify a directory."
 msgstr "您必須指定一個目錄。"
 
@@ -20314,6 +20499,14 @@
 msgid "cannot find commit %s (%s)"
 msgstr "不能找到提交 %s(%s)"
 
+#: builtin/show-index.c:21
+msgid "hash-algorithm"
+msgstr "雜湊算法"
+
+#: builtin/show-index.c:31
+msgid "Unknown hash algorithm"
+msgstr "未知的雜湊算法"
+
 #: builtin/show-ref.c:12
 msgid ""
 "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
@@ -20366,50 +20559,54 @@
 msgid "this worktree is not sparse (sparse-checkout file may not exist)"
 msgstr "這不是稀疏工作區(sparse-checkout 檔案可能不存在)"
 
-#: builtin/sparse-checkout.c:212
+#: builtin/sparse-checkout.c:216
 msgid "failed to create directory for sparse-checkout file"
 msgstr "無法建立稀疏檢出檔案的目錄"
 
-#: builtin/sparse-checkout.c:253
+#: builtin/sparse-checkout.c:257
+msgid "unable to upgrade repository format to enable worktreeConfig"
+msgstr "無法升級版本庫格式,以致無法啟用 worktreeConfig"
+
+#: builtin/sparse-checkout.c:259
 msgid "failed to set extensions.worktreeConfig setting"
 msgstr "無法設定 extensions.worktreeConfig 設定"
 
-#: builtin/sparse-checkout.c:270
+#: builtin/sparse-checkout.c:276
 msgid "git sparse-checkout init [--cone]"
 msgstr "git sparse-checkout init [--cone]"
 
-#: builtin/sparse-checkout.c:289
+#: builtin/sparse-checkout.c:295
 msgid "initialize the sparse-checkout in cone mode"
 msgstr "以 cone 模式初始化稀疏檢出"
 
-#: builtin/sparse-checkout.c:326
+#: builtin/sparse-checkout.c:332
 #, c-format
 msgid "failed to open '%s'"
 msgstr "無法開啟「%s」"
 
-#: builtin/sparse-checkout.c:383
+#: builtin/sparse-checkout.c:389
 #, c-format
 msgid "could not normalize path %s"
 msgstr "無法標準化路徑 %s"
 
-#: builtin/sparse-checkout.c:395
+#: builtin/sparse-checkout.c:401
 msgid "git sparse-checkout (set|add) (--stdin | <patterns>)"
 msgstr "git sparse-checkout (set|add) (--stdin | <樣式>)"
 
-#: builtin/sparse-checkout.c:420
+#: builtin/sparse-checkout.c:426
 #, c-format
 msgid "unable to unquote C-style string '%s'"
 msgstr "無法去掉 '%s' C 樣式字串的引號"
 
-#: builtin/sparse-checkout.c:474 builtin/sparse-checkout.c:498
+#: builtin/sparse-checkout.c:480 builtin/sparse-checkout.c:504
 msgid "unable to load existing sparse-checkout patterns"
 msgstr "無法載入現存的稀疏檢出樣式"
 
-#: builtin/sparse-checkout.c:543
+#: builtin/sparse-checkout.c:549
 msgid "read patterns from standard in"
 msgstr "從標準輸入讀取樣式"
 
-#: builtin/sparse-checkout.c:580
+#: builtin/sparse-checkout.c:586
 msgid "error while refreshing working directory"
 msgstr "重新整理工作目錄時發生錯誤"
 
@@ -21096,12 +21293,40 @@
 msgid "git submodule--helper set-url [--quiet] <path> <newurl>"
 msgstr "git submodule--helper set-url [--quiet] <路徑> <新 URL>"
 
-#: builtin/submodule--helper.c:2323 git.c:436 git.c:683
+#: builtin/submodule--helper.c:2294
+msgid "set the default tracking branch to master"
+msgstr "將預設的追蹤分支設為 master"
+
+#: builtin/submodule--helper.c:2296
+msgid "set the default tracking branch"
+msgstr "設定預設追蹤分支"
+
+#: builtin/submodule--helper.c:2300
+#| msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
+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:2301
+#| msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
+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:2308
+msgid "--branch or --default required"
+msgstr "需要 --branch 或 --default"
+
+#: builtin/submodule--helper.c:2311
+msgid "--branch and --default are mutually exclusive"
+msgstr "--branch 與 --default 互斥"
+
+#: builtin/submodule--helper.c:2367 git.c:436 git.c:683
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s 不支援 --super-prefix"
 
-#: builtin/submodule--helper.c:2329
+#: builtin/submodule--helper.c:2373
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' 不是一個有效的 submodule--helper 子指令"
@@ -21721,193 +21946,187 @@
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <路徑>"
 
-#: builtin/worktree.c:60 builtin/worktree.c:894
+#: builtin/worktree.c:60 builtin/worktree.c:972
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "刪除 '%s' 失敗"
 
-#: builtin/worktree.c:79
-#, c-format
-msgid "Removing worktrees/%s: not a valid directory"
-msgstr "刪除工作區/%s:不是一個有效的目錄"
-
 #: builtin/worktree.c:85
-#, c-format
-msgid "Removing worktrees/%s: gitdir file does not exist"
-msgstr "刪除 worktrees/%s:gitdir 檔案不存在"
+msgid "not a valid directory"
+msgstr "非有效目錄"
 
-#: builtin/worktree.c:90 builtin/worktree.c:99
-#, c-format
-msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
-msgstr "刪除 worktrees/%s:無法讀取 gitdir 檔案 (%s)"
+#: builtin/worktree.c:91
+msgid "gitdir file does not exist"
+msgstr "找不到 gitdir 檔案"
 
-#: builtin/worktree.c:109
+#: builtin/worktree.c:96 builtin/worktree.c:105
 #, c-format
-msgid ""
-"Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
-"%<PRIuMAX>)"
-msgstr "刪除工作樹/%s:讀取過短(期望 %<PRIuMAX> 位元組,讀取 %<PRIuMAX>)"
+msgid "unable to read gitdir file (%s)"
+msgstr "無法讀取 gitdir 檔案 (%s)"
 
-#: builtin/worktree.c:117
+#: builtin/worktree.c:115
 #, c-format
-msgid "Removing worktrees/%s: invalid gitdir file"
-msgstr "刪除 worktrees/%s:無效的 gitdir 檔案"
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "讀取過短(預期有 %<PRIuMAX> 位元組,只讀到 %<PRIuMAX>)"
 
-#: builtin/worktree.c:126
+#: builtin/worktree.c:123
+msgid "invalid gitdir file"
+msgstr "gitdir 檔案無效"
+
+#: builtin/worktree.c:131
+msgid "gitdir file points to non-existent location"
+msgstr "gitdir 檔案指向的位置不存在"
+
+#: builtin/worktree.c:146
 #, c-format
-msgid "Removing worktrees/%s: gitdir file points to non-existent location"
-msgstr "刪除 worktrees/%s:gitdir 檔案的指向不存在"
+msgid "Removing %s/%s: %s"
+msgstr "移除 %s/%s: %s"
 
-#: builtin/worktree.c:165
+#: builtin/worktree.c:221
 msgid "report pruned working trees"
 msgstr "報告清除的工作區"
 
-#: builtin/worktree.c:167
+#: builtin/worktree.c:223
 msgid "expire working trees older than <time>"
 msgstr "將早於 <時間> 的工作區過期"
 
-#: builtin/worktree.c:234
+#: builtin/worktree.c:293
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' 已經存在"
 
-#: builtin/worktree.c:244
+#: builtin/worktree.c:302
 #, c-format
-msgid "unable to re-add worktree '%s'"
-msgstr "無法再次新增工作區 '%s'"
+msgid "unusable worktree destination '%s'"
+msgstr "無法使用的工作目錄目的地「%s」"
 
-#: builtin/worktree.c:249
+#: builtin/worktree.c:307
 #, c-format
 msgid ""
 "'%s' is a missing but locked worktree;\n"
-"use 'add -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
+"use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
 msgstr ""
-"'%s' 是一個遺失但鎖定的工作區,使用\n"
-"'add -f -f' 覆蓋,或 'unlock' 和 'prune' 或 'remove' 清除"
+"'%s' 是個遺失但被鎖定的工作區;\n"
+"使用 '%s -f -f' 覆蓋,或 'unlock' 和 'prune' 或 'remove' 清除"
 
-#: builtin/worktree.c:251
+#: builtin/worktree.c:309
 #, c-format
 msgid ""
 "'%s' is a missing but already registered worktree;\n"
-"use 'add -f' to override, or 'prune' or 'remove' to clear"
+"use '%s -f' to override, or 'prune' or 'remove' to clear"
 msgstr ""
-"'%s' 是一個遺失但已經註冊的工作區,使用\n"
-"'add -f' 覆蓋,或 'prune' 或 'remove' 清除"
+"'%s' 是個遺失但已註冊的工作區;\n"
+"使用 '%s -f' 覆蓋,或 'prune' 或 'remove' 清除"
 
-#: builtin/worktree.c:301
+#: builtin/worktree.c:360
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "不能建立目錄 '%s'"
 
-#: builtin/worktree.c:435 builtin/worktree.c:441
+#: builtin/worktree.c:494 builtin/worktree.c:500
 #, c-format
 msgid "Preparing worktree (new branch '%s')"
 msgstr "準備工作區(新分支 '%s')"
 
-#: builtin/worktree.c:437
+#: builtin/worktree.c:496
 #, c-format
 msgid "Preparing worktree (resetting branch '%s'; was at %s)"
 msgstr "準備工作區(重設分支 '%s',之前為 %s)"
 
-#: builtin/worktree.c:446
+#: builtin/worktree.c:505
 #, c-format
 msgid "Preparing worktree (checking out '%s')"
 msgstr "準備工作區(檢出 '%s')"
 
-#: builtin/worktree.c:452
+#: builtin/worktree.c:511
 #, c-format
 msgid "Preparing worktree (detached HEAD %s)"
 msgstr "準備工作區(分離開頭指標 %s)"
 
-#: builtin/worktree.c:493
+#: builtin/worktree.c:552
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr "檢出 <分支>,即使已經被檢出到其它工作區"
 
-#: builtin/worktree.c:496
+#: builtin/worktree.c:555
 msgid "create a new branch"
 msgstr "建立一個新分支"
 
-#: builtin/worktree.c:498
+#: builtin/worktree.c:557
 msgid "create or reset a branch"
 msgstr "建立或重設一個分支"
 
-#: builtin/worktree.c:500
+#: builtin/worktree.c:559
 msgid "populate the new working tree"
 msgstr "生成新的工作區"
 
-#: builtin/worktree.c:501
+#: builtin/worktree.c:560
 msgid "keep the new working tree locked"
 msgstr "鎖定新工作區"
 
-#: builtin/worktree.c:504
+#: builtin/worktree.c:563
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "設定追蹤模式(參見 git-branch(1))"
 
-#: builtin/worktree.c:507
+#: builtin/worktree.c:566
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "嘗試為新分支名符合一個遠端追蹤分支"
 
-#: builtin/worktree.c:515
+#: builtin/worktree.c:574
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b、-B 和 --detach 是互斥的"
 
-#: builtin/worktree.c:576
+#: builtin/worktree.c:635
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "只能在建立新分支時使用 --[no-]track 選項"
 
-#: builtin/worktree.c:676
+#: builtin/worktree.c:755
 msgid "reason for locking"
 msgstr "鎖定原因"
 
-#: builtin/worktree.c:688 builtin/worktree.c:721 builtin/worktree.c:795
-#: builtin/worktree.c:922
+#: builtin/worktree.c:767 builtin/worktree.c:800 builtin/worktree.c:874
+#: builtin/worktree.c:1000
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' 不是一個工作區"
 
-#: builtin/worktree.c:690 builtin/worktree.c:723
+#: builtin/worktree.c:769 builtin/worktree.c:802
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "主工作區無法被加鎖或解鎖"
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:774
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' 已被鎖定,原因:%s"
 
-#: builtin/worktree.c:697
+#: builtin/worktree.c:776
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' 已被鎖定"
 
-#: builtin/worktree.c:725
+#: builtin/worktree.c:804
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' 未被鎖定"
 
-#: builtin/worktree.c:766
+#: builtin/worktree.c:845
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "不能移動或刪除包含子模組的工作區"
 
-#: builtin/worktree.c:774
+#: builtin/worktree.c:853
 msgid "force move even if worktree is dirty or locked"
 msgstr "強制移動,即使工作區是髒的或已鎖定"
 
-#: builtin/worktree.c:797 builtin/worktree.c:924
+#: builtin/worktree.c:876 builtin/worktree.c:1002
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' 是一個主工作區"
 
-#: builtin/worktree.c:802
+#: builtin/worktree.c:881
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "無法從 '%s' 算出目標名稱"
 
-#: builtin/worktree.c:808
-#, c-format
-msgid "target '%s' already exists"
-msgstr "目標 '%s' 已存在"
-
-#: builtin/worktree.c:816
+#: builtin/worktree.c:894
 #, c-format
 msgid ""
 "cannot move a locked working tree, lock reason: %s\n"
@@ -21916,7 +22135,7 @@
 "無法移動一個鎖定的工作區,鎖定原因:%s\n"
 "使用 'move -f -f' 覆蓋或先解鎖"
 
-#: builtin/worktree.c:818
+#: builtin/worktree.c:896
 msgid ""
 "cannot move a locked working tree;\n"
 "use 'move -f -f' to override or unlock first"
@@ -21924,36 +22143,36 @@
 "無法移動一個鎖定的工作區,\n"
 "使用 'move -f -f' 覆蓋或先解鎖"
 
-#: builtin/worktree.c:821
+#: builtin/worktree.c:899
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "驗證失敗,無法移動工作區:%s"
 
-#: builtin/worktree.c:826
+#: builtin/worktree.c:904
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "移動 '%s' 到 '%s' 失敗"
 
-#: builtin/worktree.c:874
+#: builtin/worktree.c:952
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "在 '%s' 中執行 'git status' 失敗"
 
-#: builtin/worktree.c:878
+#: builtin/worktree.c:956
 #, c-format
 msgid "'%s' contains modified or untracked files, use --force to delete it"
 msgstr "'%s' 包含修改或未追蹤的檔案,使用 --force 刪除"
 
-#: builtin/worktree.c:883
+#: builtin/worktree.c:961
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "在 '%s' 中執行 'git status' 失敗,離開碼 %d"
 
-#: builtin/worktree.c:906
+#: builtin/worktree.c:984
 msgid "force removal even if worktree is dirty or locked"
 msgstr "強制刪除,即使工作區是髒的或已鎖定"
 
-#: builtin/worktree.c:929
+#: builtin/worktree.c:1007
 #, c-format
 msgid ""
 "cannot remove a locked working tree, lock reason: %s\n"
@@ -21962,7 +22181,7 @@
 "無法刪除一個鎖定的工作區,鎖定原因:%s\n"
 "使用 'remove -f -f' 覆蓋或先解鎖"
 
-#: builtin/worktree.c:931
+#: builtin/worktree.c:1009
 msgid ""
 "cannot remove a locked working tree;\n"
 "use 'remove -f -f' to override or unlock first"
@@ -21970,7 +22189,7 @@
 "無法刪除一個鎖定的工作區,\n"
 "使用 'remove -f -f' 覆蓋或先解鎖"
 
-#: builtin/worktree.c:934
+#: builtin/worktree.c:1012
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "驗證失敗,無法刪除工作區:%s"
@@ -21991,32 +22210,32 @@
 msgid "only useful for debugging"
 msgstr "只對除錯有用"
 
-#: bugreport.c:14
+#: bugreport.c:15
 msgid "git version:\n"
 msgstr "git 版本:\n"
 
-#: bugreport.c:20
+#: bugreport.c:21
 #, c-format
 msgid "uname() failed with error '%s' (%d)\n"
 msgstr "uname() 失敗,錯誤:「%s」(%d)\n"
 
-#: bugreport.c:30
+#: bugreport.c:31
 msgid "compiler info: "
 msgstr "編譯器資訊: "
 
-#: bugreport.c:32
+#: bugreport.c:34
 msgid "libc info: "
 msgstr "libc 資訊: "
 
-#: bugreport.c:74
+#: bugreport.c:80
 msgid "not run from a git repository - no hooks to show\n"
 msgstr "不是從 git 版本庫執行 - 沒有可顯示的掛鉤\n"
 
-#: bugreport.c:84
+#: bugreport.c:90
 msgid "git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"
 msgstr "git bugreport [-o|--output-directory <檔案>] [-s|--suffix <格式>]"
 
-#: bugreport.c:91
+#: bugreport.c:97
 msgid ""
 "Thank you for filling out a Git bug report!\n"
 "Please answer the following questions to help us understand your issue.\n"
@@ -22050,66 +22269,76 @@
 "請檢閱臭蟲報告下方的剩餘部分。\n"
 "您可刪除任何您不想分享的地方。\n"
 
-#: bugreport.c:130
+#: bugreport.c:136
 msgid "specify a destination for the bugreport file"
 msgstr "請指定 bugreport 檔案的目的地"
 
-#: bugreport.c:132
+#: bugreport.c:138
 msgid "specify a strftime format suffix for the filename"
 msgstr "請指定檔案名稱的 strftime 格式後綴"
 
-#: bugreport.c:156
+#: bugreport.c:162
 #, c-format
 msgid "could not create leading directories for '%s'"
 msgstr "無法建立 '%s' 的前置目錄"
 
-#: bugreport.c:163
+#: bugreport.c:169
 msgid "System Info"
 msgstr "系統資訊"
 
-#: bugreport.c:166
+#: bugreport.c:172
 msgid "Enabled Hooks"
 msgstr "啟用的掛鉤"
 
-#: bugreport.c:174
+#: bugreport.c:180
 #, c-format
 msgid "couldn't create a new file at '%s'"
 msgstr "不要在「%s」建立新檔案"
 
-#: bugreport.c:186
+#: bugreport.c:184
+#, c-format
+msgid "unable to write to %s"
+msgstr "無法寫入 %s"
+
+#: bugreport.c:194
 #, c-format
 msgid "Created new report at '%s'.\n"
 msgstr "已在「%s」建立新報告。\n"
 
-#: fast-import.c:3085
+#: fast-import.c:3100
 #, c-format
 msgid "Missing from marks for submodule '%s'"
 msgstr "「%s」子模組缺少 from 標記"
 
-#: fast-import.c:3087
+#: fast-import.c:3102
 #, c-format
 msgid "Missing to marks for submodule '%s'"
 msgstr "「%s」子模組缺少 to 標記"
 
-#: fast-import.c:3222
+#: fast-import.c:3237
 #, c-format
 msgid "Expected 'mark' command, got %s"
 msgstr "預期 'mark' 指令,得到 %s"
 
-#: fast-import.c:3227
+#: fast-import.c:3242
 #, c-format
 msgid "Expected 'to' command, got %s"
 msgstr "預期 'to' 指令,得到 %s"
 
-#: fast-import.c:3317
+#: fast-import.c:3334
 msgid "Expected format name:filename for submodule rewrite option"
 msgstr "期望子模組 rewrite 選項的格式是 name:filename"
 
-#: fast-import.c:3371
+#: fast-import.c:3388
 #, c-format
 msgid "feature '%s' forbidden in input without --allow-unsafe-features"
 msgstr "沒有 --allow-unsafe-features 時,禁止在輸入中使用 '%s' 功能"
 
+#: http-fetch.c:111
+#, c-format
+msgid "argument to --packfile must be a valid hash (got '%s')"
+msgstr "傳入 --packfile 的參數必須是有效的雜湊 (收到 '%s')"
+
 #: credential-cache--daemon.c:223
 #, c-format
 msgid ""
@@ -22285,30 +22514,30 @@
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr "不支援公鑰檔案鎖定,因為 cURL < 7.44.0"
 
-#: http.c:914
+#: http.c:910
 msgid "CURLSSLOPT_NO_REVOKE not supported with cURL < 7.44.0"
 msgstr "不支援 CURLSSLOPT_NO_REVOKE,因為 cURL < 7.44.0"
 
-#: http.c:993
+#: http.c:989
 msgid "Protocol restrictions not supported with cURL < 7.19.4"
 msgstr "不支援協定限制,因為 cURL < 7.19.4"
 
-#: http.c:1139
+#: http.c:1132
 #, c-format
 msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
 msgstr "不支援的 SSL 後端 '%s'。支援的 SSL 後端:"
 
-#: http.c:1146
+#: 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 後端組建"
 
-#: http.c:1150
+#: http.c:1143
 #, c-format
 msgid "Could not set SSL backend to '%s': already set"
 msgstr "無法將 SSL 後端設定為 '%s':已經設定"
 
-#: http.c:2032
+#: http.c:2025
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -22319,111 +22548,134 @@
 "     請求:%s\n"
 "   重定向:%s"
 
-#: remote-curl.c:166
+#: remote-curl.c:168
 #, c-format
 msgid "invalid quoting in push-option value: '%s'"
 msgstr "在 push-option 取值中無效的引號:'%s'"
 
-#: remote-curl.c:263
+#: remote-curl.c:295
 #, c-format
 msgid "%sinfo/refs not valid: is this a git repository?"
 msgstr "%sinfo/refs 無效:這是一個 git 版本庫嗎?"
 
-#: remote-curl.c:364
+#: remote-curl.c:396
 msgid "invalid server response; expected service, got flush packet"
 msgstr "無效的服務端回應。預期服務,得到 flush 包"
 
-#: remote-curl.c:395
+#: remote-curl.c:427
 #, c-format
 msgid "invalid server response; got '%s'"
 msgstr "無效的服務端回應,得到 '%s'"
 
-#: remote-curl.c:455
+#: remote-curl.c:487
 #, c-format
 msgid "repository '%s' not found"
 msgstr "版本庫 '%s' 未找到"
 
-#: remote-curl.c:459
+#: remote-curl.c:491
 #, c-format
 msgid "Authentication failed for '%s'"
 msgstr "'%s' 身份驗證失敗"
 
-#: remote-curl.c:463
+#: remote-curl.c:495
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr "無法存取 '%s':%s"
 
-#: remote-curl.c:469
+#: remote-curl.c:501
 #, c-format
 msgid "redirecting to %s"
 msgstr "重定向到 %s"
 
-#: remote-curl.c:593
+#: remote-curl.c:630
 msgid "shouldn't have EOF when not gentle on EOF"
 msgstr "當沒有設定溫和處理檔案結束符(EOF)時,不應該有檔案結束符"
 
-#: remote-curl.c:673
+#: remote-curl.c:642
+msgid "remote server sent stateless separator"
+msgstr "遠端伺服器傳送了無狀態的分隔符號"
+
+#: remote-curl.c:712
 msgid "unable to rewind rpc post data - try increasing http.postBuffer"
 msgstr "無法還原 rpc post 資料 - 嘗試增加 http.postBuffer"
 
-#: remote-curl.c:733
+#: remote-curl.c:742
+#, c-format
+msgid "remote-curl: bad line length character: %.4s"
+msgstr "remote-curl: 錯誤的行長度字串:%.4s"
+
+#: remote-curl.c:744
+msgid "remote-curl: unexpected response end packet"
+msgstr "remote-curl: 非預期的回應結束封包"
+
+#: remote-curl.c:820
 #, c-format
 msgid "RPC failed; %s"
 msgstr "RPC 失敗。%s"
 
-#: remote-curl.c:773
+#: remote-curl.c:860
 msgid "cannot handle pushes this big"
 msgstr "不能處理這麼大的推送"
 
-#: remote-curl.c:888
+#: remote-curl.c:975
 #, c-format
 msgid "cannot deflate request; zlib deflate error %d"
 msgstr "不能壓縮請求,zlib 壓縮錯誤 %d"
 
-#: remote-curl.c:892
+#: remote-curl.c:979
 #, c-format
 msgid "cannot deflate request; zlib end error %d"
 msgstr "不能壓縮請求,zlib 結束錯誤 %d"
 
-#: remote-curl.c:1023
+#: remote-curl.c:1029
+#, c-format
+msgid "%d bytes of length header were received"
+msgstr "收到了 %d 位元組長度的標頭"
+
+#: remote-curl.c:1031
+#, c-format
+msgid "%d bytes of body are still expected"
+msgstr "預期仍要有 %d 位元組的本文 (body)"
+
+#: remote-curl.c:1120
 msgid "dumb http transport does not support shallow capabilities"
 msgstr "啞 http 傳輸不支援 shalllow 能力"
 
-#: remote-curl.c:1038
+#: remote-curl.c:1135
 msgid "fetch failed."
 msgstr "取得失敗。"
 
-#: remote-curl.c:1086
+#: remote-curl.c:1183
 msgid "cannot fetch by sha1 over smart http"
 msgstr "無法透過智慧 HTTP 取得 sha1"
 
-#: remote-curl.c:1130 remote-curl.c:1136
+#: remote-curl.c:1227 remote-curl.c:1233
 #, c-format
 msgid "protocol error: expected sha/ref, got '%s'"
 msgstr "協定錯誤:期望 sha/ref,卻得到 '%s'"
 
-#: remote-curl.c:1148 remote-curl.c:1263
+#: remote-curl.c:1245 remote-curl.c:1360
 #, c-format
 msgid "http transport does not support %s"
 msgstr "http 傳輸協定不支援 %s"
 
-#: remote-curl.c:1184
+#: remote-curl.c:1281
 msgid "git-http-push failed"
 msgstr "git-http-push 失敗"
 
-#: remote-curl.c:1369
+#: remote-curl.c:1466
 msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
 msgstr "remote-curl:用法:git remote-curl <遠端> [<url>]"
 
-#: remote-curl.c:1401
+#: remote-curl.c:1498
 msgid "remote-curl: error reading command stream from git"
 msgstr "remote-curl:錯誤讀取來自 git 的指令流"
 
-#: remote-curl.c:1408
+#: remote-curl.c:1505
 msgid "remote-curl: fetch attempted without a local repo"
 msgstr "remote-curl:嘗試沒有本機版本庫下取得"
 
-#: remote-curl.c:1448
+#: remote-curl.c:1546
 #, c-format
 msgid "remote-curl: unknown command '%s' from git"
 msgstr "remote-curl:未知的來自 git 的指令 '%s'"
@@ -23431,29 +23683,29 @@
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "無法遞迴進子模組路徑 '$displaypath'"
 
-#: git-submodule.sh:878
+#: git-submodule.sh:852
 msgid "The --cached option cannot be used with the --files option"
 msgstr "選項 --cached 不能和選項 --files 同時使用"
 
-#: git-submodule.sh:930
+#: git-submodule.sh:904
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "意外的模式 $mod_dst"
 
 #  譯者:請維持前導空格
-#: git-submodule.sh:950
+#: git-submodule.sh:924
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr "  警告:$display_name 未包含提交 $sha1_src"
 
 #  譯者:請維持前導空格
-#: git-submodule.sh:953
+#: git-submodule.sh:927
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr "  警告:$display_name 未包含提交 $sha1_dst"
 
 #  譯者:請維持前導空格
-#: git-submodule.sh:956
+#: git-submodule.sh:930
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr "  警告:$display_name 未包含提交 $sha1_src 和 $sha1_dst"
@@ -23849,44 +24101,44 @@
 msgid_plural "touched %d paths\n"
 msgstr[0] "建立了 %d 個路徑\n"
 
-#: git-add--interactive.perl:1053
+#: git-add--interactive.perl:1055
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
 msgstr "如果修補檔能乾淨地套用,編輯塊將立即標記為暫存。"
 
-#: git-add--interactive.perl:1056
+#: git-add--interactive.perl:1058
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
 msgstr "如果修補檔能乾淨地套用,編輯塊將立即標記為儲藏。"
 
-#: git-add--interactive.perl:1059
+#: git-add--interactive.perl:1061
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
 msgstr "如果修補檔能乾淨地套用,編輯塊將立即標記為未暫存。"
 
-#: git-add--interactive.perl:1062 git-add--interactive.perl:1071
-#: git-add--interactive.perl:1077
+#: git-add--interactive.perl:1064 git-add--interactive.perl:1073
+#: git-add--interactive.perl:1079
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
 msgstr "如果修補檔能乾淨地套用,編輯塊將立即標記為應用。"
 
-#: git-add--interactive.perl:1065 git-add--interactive.perl:1068
-#: git-add--interactive.perl:1074
+#: git-add--interactive.perl:1067 git-add--interactive.perl:1070
+#: git-add--interactive.perl:1076
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
 msgstr "如果修補檔能乾淨地套用,編輯塊將立即標記為捨棄。"
 
-#: git-add--interactive.perl:1111
+#: git-add--interactive.perl:1113
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "為寫入開啟區塊編輯檔案失敗:%s"
 
-#: git-add--interactive.perl:1118
+#: git-add--interactive.perl:1120
 #, perl-format
 msgid ""
 "---\n"
@@ -23899,12 +24151,12 @@
 "要刪除 '%s' 開始的行,刪除它們。\n"
 "以 %s 開始的行將被刪除。\n"
 
-#: git-add--interactive.perl:1140
+#: git-add--interactive.perl:1142
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "無法讀取區塊編輯檔案:%s"
 
-#: git-add--interactive.perl:1248
+#: git-add--interactive.perl:1250
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -23918,7 +24170,7 @@
 "a - 暫存此區塊和本檔案中後面的全部區塊\n"
 "d - 不暫存此區塊和本檔案中後面的全部區塊"
 
-#: git-add--interactive.perl:1254
+#: git-add--interactive.perl:1256
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -23932,7 +24184,7 @@
 "a - 儲藏此區塊和本檔案中後面的全部區塊\n"
 "d - 不儲藏此區塊和本檔案中後面的全部區塊"
 
-#: git-add--interactive.perl:1260
+#: git-add--interactive.perl:1262
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -23946,7 +24198,7 @@
 "a - 不暫存此區塊和本檔案中後面的全部區塊\n"
 "d - 不要不暫存此區塊和本檔案中後面的全部區塊"
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1268
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -23960,7 +24212,7 @@
 "a - 套用此區塊和本檔案中後面的全部區塊\n"
 "d - 不要套用此區塊和本檔案中後面的全部區塊"
 
-#: git-add--interactive.perl:1272 git-add--interactive.perl:1290
+#: git-add--interactive.perl:1274 git-add--interactive.perl:1292
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -23974,7 +24226,7 @@
 "a - 捨棄此區塊和本檔案中後面的全部區塊\n"
 "d - 不要捨棄此區塊和本檔案中後面的全部區塊"
 
-#: git-add--interactive.perl:1278
+#: git-add--interactive.perl:1280
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -23988,7 +24240,7 @@
 "a - 捨棄此區塊和本檔案中後面的全部區塊\n"
 "d - 不要捨棄此區塊和本檔案中後面的全部區塊"
 
-#: git-add--interactive.perl:1284
+#: git-add--interactive.perl:1286
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -24002,7 +24254,7 @@
 "a - 套用此區塊和本檔案中後面的全部區塊\n"
 "d - 不要套用此區塊和本檔案中後面的全部區塊"
 
-#: git-add--interactive.perl:1296
+#: git-add--interactive.perl:1298
 msgid ""
 "y - apply this hunk to worktree\n"
 "n - do not apply this hunk to worktree\n"
@@ -24016,7 +24268,7 @@
 "a - 套用此區塊和本檔案中後面的全部區塊\n"
 "d - 不要套用此區塊和本檔案中後面的全部區塊"
 
-#: git-add--interactive.perl:1311
+#: git-add--interactive.perl:1313
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -24038,83 +24290,88 @@
 "e - 手動編輯目前區塊\n"
 "? - 顯示說明\n"
 
-#: git-add--interactive.perl:1342
+#: git-add--interactive.perl:1344
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "選中的區塊不能套用到索引!\n"
 
-#: git-add--interactive.perl:1357
+#: git-add--interactive.perl:1359
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "忽略未套用的:%s\n"
 
-#: git-add--interactive.perl:1468
+#: git-add--interactive.perl:1478
 #, perl-format
 msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
 msgstr "將模式變更套用到工作區 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1469
+#: git-add--interactive.perl:1479
 #, perl-format
 msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
-msgstr "將刪除動作套用到工作區 [y,n,q,a,d%s,?]? "
+msgstr "將刪除變更套用到工作區 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1470
+#: git-add--interactive.perl:1480
+#, perl-format
+msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
+msgstr "將新增變更套用到工作區 [y,n,q,a,d%s,?]? "
+
+#: git-add--interactive.perl:1481
 #, perl-format
 msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
 msgstr "將此區塊套用到工作區 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1570
+#: git-add--interactive.perl:1587
 msgid "No other hunks to goto\n"
 msgstr "沒有其它可供跳轉的區塊\n"
 
-#: git-add--interactive.perl:1588
+#: git-add--interactive.perl:1605
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "無效數字:'%s'\n"
 
-#: git-add--interactive.perl:1593
+#: git-add--interactive.perl:1610
 #, perl-format
 msgid "Sorry, only %d hunk available.\n"
 msgid_plural "Sorry, only %d hunks available.\n"
 msgstr[0] "對不起,只有 %d 個可用區塊。\n"
 
-#: git-add--interactive.perl:1619
+#: git-add--interactive.perl:1636
 msgid "No other hunks to search\n"
 msgstr "沒有其它可供尋找的區塊\n"
 
-#: git-add--interactive.perl:1636
+#: git-add--interactive.perl:1653
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "錯誤的正規表示式 %s:%s\n"
 
-#: git-add--interactive.perl:1646
+#: git-add--interactive.perl:1663
 msgid "No hunk matches the given pattern\n"
 msgstr "沒有和提供模式相符合的區塊\n"
 
-#: git-add--interactive.perl:1658 git-add--interactive.perl:1680
+#: git-add--interactive.perl:1675 git-add--interactive.perl:1697
 msgid "No previous hunk\n"
 msgstr "沒有前一個區塊\n"
 
-#: git-add--interactive.perl:1667 git-add--interactive.perl:1686
+#: git-add--interactive.perl:1684 git-add--interactive.perl:1703
 msgid "No next hunk\n"
 msgstr "沒有下一個區塊\n"
 
-#: git-add--interactive.perl:1692
+#: git-add--interactive.perl:1709
 msgid "Sorry, cannot split this hunk\n"
 msgstr "對不起,不能分割這個區塊\n"
 
-#: git-add--interactive.perl:1698
+#: git-add--interactive.perl:1715
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
 msgstr[0] "分割為 %d 塊。\n"
 
-#: git-add--interactive.perl:1708
+#: git-add--interactive.perl:1725
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "對不起,不能編輯這個區塊\n"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1773
+#: git-add--interactive.perl:1790
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -24131,19 +24388,19 @@
 "diff          - 顯示 HEAD 和索引間差異\n"
 "add untracked - 新增未追蹤檔案的內容至暫存列表\n"
 
-#: git-add--interactive.perl:1790 git-add--interactive.perl:1795
-#: git-add--interactive.perl:1798 git-add--interactive.perl:1805
-#: git-add--interactive.perl:1808 git-add--interactive.perl:1815
-#: git-add--interactive.perl:1819 git-add--interactive.perl:1825
+#: git-add--interactive.perl:1807 git-add--interactive.perl:1812
+#: git-add--interactive.perl:1815 git-add--interactive.perl:1822
+#: git-add--interactive.perl:1825 git-add--interactive.perl:1832
+#: git-add--interactive.perl:1836 git-add--interactive.perl:1842
 msgid "missing --"
 msgstr "缺少 --"
 
-#: git-add--interactive.perl:1821
+#: git-add--interactive.perl:1838
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "未知的 --patch 模式:%s"
 
-#: git-add--interactive.perl:1827 git-add--interactive.perl:1833
+#: git-add--interactive.perl:1844 git-add--interactive.perl:1850
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "無效的參數 %s,期望是 --"
@@ -24446,61 +24703,90 @@
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) 新增 to:%s 自行 '%s'\n"
 
-#: git-send-email.perl:1718
+#: git-send-email.perl:1722
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(non-mbox) 新增 cc:%s 自行 '%s'\n"
 
-#: git-send-email.perl:1753
+#: git-send-email.perl:1757
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(body) 新增 cc: %s 自行 '%s'\n"
 
-#: git-send-email.perl:1864
+#: git-send-email.perl:1868
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) 不能執行 '%s'"
 
-#: git-send-email.perl:1871
+#: git-send-email.perl:1875
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) 新增 %s: %s 自:'%s'\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1879
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) 無法關閉管道至 '%s'"
 
-#: git-send-email.perl:1905
+#: git-send-email.perl:1909
 msgid "cannot send message as 7bit"
 msgstr "不能以 7bit 形式傳送訊息"
 
-#: git-send-email.perl:1913
+#: git-send-email.perl:1917
 msgid "invalid transfer encoding"
 msgstr "無效的傳送編碼"
 
-#: git-send-email.perl:1954 git-send-email.perl:2006 git-send-email.perl:2016
+#: git-send-email.perl:1958 git-send-email.perl:2010 git-send-email.perl:2020
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "不能開啟 %s:%s\n"
 
-#: git-send-email.perl:1957
+#: git-send-email.perl:1961
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr "%s:修補檔包含一個超過 998 字元的行"
 
-#: git-send-email.perl:1974
+#: git-send-email.perl:1978
 #, 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:1978
+#: git-send-email.perl:1982
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "您真的要傳送 %s?[y|N]:"
 
 #, c-format
+#~ msgid "Finding commits for commit graph from %d ref"
+#~ msgid_plural "Finding commits for commit graph from %d refs"
+#~ msgstr[0] "正在從 %d 個引用中尋找提交圖的提交"
+
+#, c-format
+#~ msgid "invalid commit object id: %s"
+#~ msgstr "無效的提交物件 ID:%s"
+
+#, c-format
+#~ msgid "Removing worktrees/%s: not a valid directory"
+#~ msgstr "刪除工作區/%s:不是一個有效的目錄"
+
+#, c-format
+#~ msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
+#~ msgstr "刪除 worktrees/%s:無法讀取 gitdir 檔案 (%s)"
+
+#, c-format
+#~ msgid "Removing worktrees/%s: invalid gitdir file"
+#~ msgstr "刪除 worktrees/%s:無效的 gitdir 檔案"
+
+#, c-format
+#~ msgid "unable to re-add worktree '%s'"
+#~ msgstr "無法再次新增工作區 '%s'"
+
+#, c-format
+#~ msgid "target '%s' already exists"
+#~ msgstr "目標 '%s' 已存在"
+
+#, c-format
 #~ msgid ""
 #~ "Cannot update sparse checkout: the following entries are not up to date:\n"
 #~ "%s"
diff --git a/read-cache.c b/read-cache.c
index aa427c5..8ed1c29 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -1171,20 +1171,6 @@
 				return retval;
 			}
 
-			if (istate->cache_nr > 0 &&
-				ce_namelen(istate->cache[istate->cache_nr - 1]) > len) {
-				/*
-				 * The directory prefix lines up with part of
-				 * a longer file or directory name, but sorts
-				 * after it, so this sub-directory cannot
-				 * collide with a file.
-				 *
-				 * last: xxx/yy-file (because '-' sorts before '/')
-				 * this: xxx/yy/abc
-				 */
-				return retval;
-			}
-
 			/*
 			 * This is a possible collision. Fall through and
 			 * let the regular search code handle it.
diff --git a/ref-filter.c b/ref-filter.c
index bf7b702..f2b078d 100644
--- a/ref-filter.c
+++ b/ref-filter.c
@@ -127,7 +127,8 @@
 			unsigned int nobracket : 1, push : 1, push_remote : 1;
 		} remote_ref;
 		struct {
-			enum { C_BARE, C_BODY, C_BODY_DEP, C_LINES, C_SIG, C_SUB, C_TRAILERS } option;
+			enum { C_BARE, C_BODY, C_BODY_DEP, C_LENGTH,
+			       C_LINES, C_SIG, C_SUB, C_TRAILERS } option;
 			struct process_trailer_options trailer_opts;
 			unsigned int nlines;
 		} contents;
@@ -338,6 +339,8 @@
 		atom->u.contents.option = C_BARE;
 	else if (!strcmp(arg, "body"))
 		atom->u.contents.option = C_BODY;
+	else if (!strcmp(arg, "size"))
+		atom->u.contents.option = C_LENGTH;
 	else if (!strcmp(arg, "signature"))
 		atom->u.contents.option = C_SIG;
 	else if (!strcmp(arg, "subject"))
@@ -1253,6 +1256,8 @@
 			v->s = copy_subject(subpos, sublen);
 		else if (atom->u.contents.option == C_BODY_DEP)
 			v->s = xmemdupz(bodypos, bodylen);
+		else if (atom->u.contents.option == C_LENGTH)
+			v->s = xstrfmt("%"PRIuMAX, (uintmax_t)strlen(subpos));
 		else if (atom->u.contents.option == C_BODY)
 			v->s = xmemdupz(bodypos, nonsiglen);
 		else if (atom->u.contents.option == C_SIG)
@@ -1579,7 +1584,7 @@
 	if (ref_to_worktree_map.worktrees)
 		return;
 
-	ref_to_worktree_map.worktrees = get_worktrees(0);
+	ref_to_worktree_map.worktrees = get_worktrees();
 	hashmap_init(&(ref_to_worktree_map.map), ref_to_worktree_map_cmpfnc, NULL, 0);
 	populate_worktree_map(&(ref_to_worktree_map.map), ref_to_worktree_map.worktrees);
 }
@@ -1980,7 +1985,7 @@
  * of oids. If the given ref is a tag, check if the given tag points
  * at one of the oids in the given oid array.
  * NEEDSWORK:
- * 1. Only a single level of inderection is obtained, we might want to
+ * 1. Only a single level of indirection is obtained, we might want to
  * change this to account for multiple levels (e.g. annotated tags
  * pointing to annotated tags pointing to a commit.)
  * 2. As the refs are cached we might know what refname peels to without
diff --git a/refs.c b/refs.c
index 9d58e17..2dd851f 100644
--- a/refs.c
+++ b/refs.c
@@ -9,6 +9,7 @@
 #include "iterator.h"
 #include "refs.h"
 #include "refs/refs-internal.h"
+#include "run-command.h"
 #include "object-store.h"
 #include "object.h"
 #include "tag.h"
@@ -16,6 +17,7 @@
 #include "worktree.h"
 #include "argv-array.h"
 #include "repository.h"
+#include "sigchain.h"
 
 /*
  * List of all available backends
@@ -339,7 +341,7 @@
 
 	if (o->type == OBJ_NONE) {
 		int type = oid_object_info(the_repository, name, NULL);
-		if (type < 0 || !object_as_type(the_repository, o, type, 0))
+		if (type < 0 || !object_as_type(o, type, 0))
 			return PEEL_INVALID;
 	}
 
@@ -560,6 +562,36 @@
 		argv_array_pushf(prefixes, *p, len, prefix);
 }
 
+char *repo_default_branch_name(struct repository *r)
+{
+	const char *config_key = "init.defaultbranch";
+	const char *config_display_key = "init.defaultBranch";
+	char *ret = NULL, *full_ref;
+
+	if (repo_config_get_string(r, config_key, &ret) < 0)
+		die(_("could not retrieve `%s`"), config_display_key);
+
+	if (!ret)
+		ret = xstrdup("master");
+
+	full_ref = xstrfmt("refs/heads/%s", ret);
+	if (check_refname_format(full_ref, 0))
+		die(_("invalid branch name: %s = %s"), config_display_key, ret);
+	free(full_ref);
+
+	return ret;
+}
+
+const char *git_default_branch_name(void)
+{
+	static char *ret;
+
+	if (!ret)
+		ret = repo_default_branch_name(the_repository);
+
+	return ret;
+}
+
 /*
  * *string and *len will only be substituted, and *string returned (for
  * later free()ing) if the string passed in is a magic short-hand form
@@ -1999,10 +2031,65 @@
 	return 0;
 }
 
+static const char hook_not_found;
+static const char *hook;
+
+static int run_transaction_hook(struct ref_transaction *transaction,
+				const char *state)
+{
+	struct child_process proc = CHILD_PROCESS_INIT;
+	struct strbuf buf = STRBUF_INIT;
+	int ret = 0, i;
+
+	if (hook == &hook_not_found)
+		return ret;
+	if (!hook)
+		hook = find_hook("reference-transaction");
+	if (!hook) {
+		hook = &hook_not_found;
+		return ret;
+	}
+
+	argv_array_pushl(&proc.args, hook, state, NULL);
+	proc.in = -1;
+	proc.stdout_to_stderr = 1;
+	proc.trace2_hook_name = "reference-transaction";
+
+	ret = start_command(&proc);
+	if (ret)
+		return ret;
+
+	sigchain_push(SIGPIPE, SIG_IGN);
+
+	for (i = 0; i < transaction->nr; i++) {
+		struct ref_update *update = transaction->updates[i];
+
+		strbuf_reset(&buf);
+		strbuf_addf(&buf, "%s %s %s\n",
+			    oid_to_hex(&update->old_oid),
+			    oid_to_hex(&update->new_oid),
+			    update->refname);
+
+		if (write_in_full(proc.in, buf.buf, buf.len) < 0) {
+			if (errno != EPIPE)
+				ret = -1;
+			break;
+		}
+	}
+
+	close(proc.in);
+	sigchain_pop(SIGPIPE);
+	strbuf_release(&buf);
+
+	ret |= finish_command(&proc);
+	return ret;
+}
+
 int ref_transaction_prepare(struct ref_transaction *transaction,
 			    struct strbuf *err)
 {
 	struct ref_store *refs = transaction->ref_store;
+	int ret;
 
 	switch (transaction->state) {
 	case REF_TRANSACTION_OPEN:
@@ -2025,7 +2112,17 @@
 		return -1;
 	}
 
-	return refs->be->transaction_prepare(refs, transaction, err);
+	ret = refs->be->transaction_prepare(refs, transaction, err);
+	if (ret)
+		return ret;
+
+	ret = run_transaction_hook(transaction, "prepared");
+	if (ret) {
+		ref_transaction_abort(transaction, err);
+		die(_("ref updates aborted by hook"));
+	}
+
+	return 0;
 }
 
 int ref_transaction_abort(struct ref_transaction *transaction,
@@ -2049,6 +2146,8 @@
 		break;
 	}
 
+	run_transaction_hook(transaction, "aborted");
+
 	ref_transaction_free(transaction);
 	return ret;
 }
@@ -2077,7 +2176,10 @@
 		break;
 	}
 
-	return refs->be->transaction_finish(refs, transaction, err);
+	ret = refs->be->transaction_finish(refs, transaction, err);
+	if (!ret)
+		run_transaction_hook(transaction, "committed");
+	return ret;
 }
 
 int refs_verify_refname_available(struct ref_store *refs,
diff --git a/refs.h b/refs.h
index e010f8a..f212f89 100644
--- a/refs.h
+++ b/refs.h
@@ -155,6 +155,15 @@
 int dwim_log(const char *str, int len, struct object_id *oid, char **ref);
 
 /*
+ * Retrieves the default branch name for newly-initialized repositories.
+ *
+ * The return value of `repo_default_branch_name()` is an allocated string. The
+ * return value of `git_default_branch_name()` is a singleton.
+ */
+const char *git_default_branch_name(void);
+char *repo_default_branch_name(struct repository *r);
+
+/*
  * A ref_transaction represents a collection of reference updates that
  * should succeed or fail together.
  *
diff --git a/remote-curl.c b/remote-curl.c
index 75532a8..c9921c5 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -41,7 +41,9 @@
 		deepen_relative : 1,
 		from_promisor : 1,
 		no_dependents : 1,
-		atomic : 1;
+		atomic : 1,
+		object_format : 1;
+	const struct git_hash_algo *hash_algo;
 };
 static struct options options;
 static struct string_list cas_options = STRING_LIST_INIT_DUP;
@@ -119,7 +121,11 @@
 	}
 	else if (!strcmp(name, "cas")) {
 		struct strbuf val = STRBUF_INIT;
-		strbuf_addf(&val, "--" CAS_OPT_NAME "=%s", value);
+		strbuf_addstr(&val, "--force-with-lease=");
+		if (*value != '"')
+			strbuf_addstr(&val, value);
+		else if (unquote_c_style(&val, value, NULL))
+			return -1;
 		string_list_append(&cas_options, val.buf);
 		strbuf_release(&val);
 		return 0;
@@ -190,6 +196,16 @@
 	} else if (!strcmp(name, "filter")) {
 		options.filter = xstrdup(value);
 		return 0;
+	} else if (!strcmp(name, "object-format")) {
+		int algo;
+		options.object_format = 1;
+		if (strcmp(value, "true")) {
+			algo = hash_algo_by_name(value);
+			if (algo == GIT_HASH_UNKNOWN)
+				die("unknown object format '%s'", value);
+			options.hash_algo = &hash_algos[algo];
+		}
+		return 0;
 	} else {
 		return 1 /* unsupported */;
 	}
@@ -231,6 +247,7 @@
 	case protocol_v0:
 		get_remote_heads(&reader, &list, for_push ? REF_NORMAL : 0,
 				 NULL, &heads->shallow);
+		options.hash_algo = reader.hash_algo;
 		break;
 	case protocol_unknown_version:
 		BUG("unknown protocol version");
@@ -239,6 +256,19 @@
 	return list;
 }
 
+static const struct git_hash_algo *detect_hash_algo(struct discovery *heads)
+{
+	const char *p = memchr(heads->buf, '\t', heads->len);
+	int algo;
+	if (!p)
+		return the_hash_algo;
+
+	algo = hash_algo_by_length((p - heads->buf) / 2);
+	if (algo == GIT_HASH_UNKNOWN)
+		return NULL;
+	return &hash_algos[algo];
+}
+
 static struct ref *parse_info_refs(struct discovery *heads)
 {
 	char *data, *start, *mid;
@@ -249,6 +279,12 @@
 	struct ref *ref = NULL;
 	struct ref *last_ref = NULL;
 
+	options.hash_algo = detect_hash_algo(heads);
+	if (!options.hash_algo)
+		die("%sinfo/refs not valid: could not determine hash algorithm; "
+		    "is this a git repository?",
+		    transport_anonymize_url(url.buf));
+
 	data = heads->buf;
 	start = NULL;
 	mid = data;
@@ -259,13 +295,13 @@
 		if (data[i] == '\t')
 			mid = &data[i];
 		if (data[i] == '\n') {
-			if (mid - start != the_hash_algo->hexsz)
+			if (mid - start != options.hash_algo->hexsz)
 				die(_("%sinfo/refs not valid: is this a git repository?"),
 				    transport_anonymize_url(url.buf));
 			data[i] = 0;
 			ref_name = mid + 1;
 			ref = alloc_ref(ref_name);
-			get_oid_hex(start, &ref->old_oid);
+			get_oid_hex_algop(start, &ref->old_oid, options.hash_algo);
 			if (!refs)
 				refs = ref;
 			if (last_ref)
@@ -509,11 +545,16 @@
 static void output_refs(struct ref *refs)
 {
 	struct ref *posn;
+	if (options.object_format && options.hash_algo) {
+		printf(":object-format %s\n", options.hash_algo->name);
+	}
 	for (posn = refs; posn; posn = posn->next) {
 		if (posn->symref)
 			printf("@%s %s\n", posn->symref, posn->name);
 		else
-			printf("%s %s\n", oid_to_hex(&posn->old_oid), posn->name);
+			printf("%s %s\n", hash_to_hex_algop(posn->old_oid.hash,
+							    options.hash_algo),
+					  posn->name);
 	}
 	printf("\n");
 	fflush(stdout);
@@ -1499,6 +1540,7 @@
 			printf("option\n");
 			printf("push\n");
 			printf("check-connectivity\n");
+			printf("object-format\n");
 			printf("\n");
 			fflush(stdout);
 		} else if (skip_prefix(buf.buf, "stateless-connect ", &arg)) {
diff --git a/remote-testsvn.c b/remote-testsvn.c
index 3af708c..cde39b9 100644
--- a/remote-testsvn.c
+++ b/remote-testsvn.c
@@ -13,7 +13,7 @@
 static const char *url;
 static int dump_from_file;
 static const char *private_ref;
-static const char *remote_ref = "refs/heads/master";
+static char *remote_ref;
 static const char *marksfilename, *notes_ref;
 struct rev_note { unsigned int rev_nr; };
 
@@ -286,7 +286,7 @@
 			private_ref_sb = STRBUF_INIT, marksfilename_sb = STRBUF_INIT,
 			notes_ref_sb = STRBUF_INIT;
 	static struct remote *remote;
-	const char *url_in;
+	const char *url_in, *remote_ref_short;
 
 	setup_git_directory();
 	if (argc < 2 || argc > 3) {
@@ -294,6 +294,9 @@
 		return 1;
 	}
 
+	remote_ref_short = git_default_branch_name();
+	remote_ref = xstrfmt("refs/heads/%s", remote_ref_short);
+
 	remote = remote_get(argv[1]);
 	url_in = (argc == 3) ? argv[2] : remote->url[0];
 
@@ -306,7 +309,8 @@
 		url = url_sb.buf;
 	}
 
-	strbuf_addf(&private_ref_sb, "refs/svn/%s/master", remote->name);
+	strbuf_addf(&private_ref_sb, "refs/svn/%s/%s",
+		    remote->name, remote_ref_short);
 	private_ref = private_ref_sb.buf;
 
 	strbuf_addf(&notes_ref_sb, "refs/notes/%s/revs", remote->name);
diff --git a/remote.c b/remote.c
index 534c642..bc46413 100644
--- a/remote.c
+++ b/remote.c
@@ -276,7 +276,7 @@
 
 	/*
 	 * The branches file would have URL and optionally
-	 * #branch specified.  The "master" (or specified) branch is
+	 * #branch specified.  The default (or specified) branch is
 	 * fetched and stored in the local branch matching the
 	 * remote name.
 	 */
@@ -284,7 +284,7 @@
 	if (frag)
 		*(frag++) = '\0';
 	else
-		frag = "master";
+		frag = (char *)git_default_branch_name();
 
 	add_url_alias(remote, strbuf_detach(&buf, NULL));
 	strbuf_addf(&buf, "refs/heads/%s:refs/heads/%s",
@@ -2097,8 +2097,16 @@
 	if (head->symref)
 		return copy_ref(find_ref_by_name(refs, head->symref));
 
-	/* If refs/heads/master could be right, it is. */
+	/* If a remote branch exists with the default branch name, let's use it. */
 	if (!all) {
+		char *ref = xstrfmt("refs/heads/%s", git_default_branch_name());
+
+		r = find_ref_by_name(refs, ref);
+		free(ref);
+		if (r && oideq(&r->old_oid, &head->old_oid))
+			return copy_ref(r);
+
+		/* Fall back to the hard-coded historical default */
 		r = find_ref_by_name(refs, "refs/heads/master");
 		if (r && oideq(&r->old_oid, &head->old_oid))
 			return copy_ref(r);
diff --git a/repo-settings.c b/repo-settings.c
index dc6817d..0918408 100644
--- a/repo-settings.c
+++ b/repo-settings.c
@@ -51,14 +51,14 @@
 		UPDATE_DEFAULT_BOOL(r->settings.index_version, 4);
 		UPDATE_DEFAULT_BOOL(r->settings.core_untracked_cache, UNTRACKED_CACHE_WRITE);
 	}
+
 	if (!repo_config_get_bool(r, "fetch.writecommitgraph", &value))
 		r->settings.fetch_write_commit_graph = value;
-	if (!repo_config_get_bool(r, "feature.experimental", &value) && value) {
-		UPDATE_DEFAULT_BOOL(r->settings.fetch_negotiation_algorithm, FETCH_NEGOTIATION_SKIPPING);
-		UPDATE_DEFAULT_BOOL(r->settings.fetch_write_commit_graph, 1);
-	}
 	UPDATE_DEFAULT_BOOL(r->settings.fetch_write_commit_graph, 0);
 
+	if (!repo_config_get_bool(r, "feature.experimental", &value) && value)
+		UPDATE_DEFAULT_BOOL(r->settings.fetch_negotiation_algorithm, FETCH_NEGOTIATION_SKIPPING);
+
 	/* Hack for test programs like test-dump-untracked-cache */
 	if (ignore_untracked_cache_config)
 		r->settings.core_untracked_cache = UNTRACKED_CACHE_KEEP;
diff --git a/revision.c b/revision.c
index ebb4d2a..6de29cd 100644
--- a/revision.c
+++ b/revision.c
@@ -633,7 +633,6 @@
 static unsigned int count_bloom_filter_definitely_not;
 static unsigned int count_bloom_filter_false_positive;
 static unsigned int count_bloom_filter_not_present;
-static unsigned int count_bloom_filter_length_zero;
 
 static void trace2_bloom_filter_statistics_atexit(void)
 {
@@ -641,7 +640,6 @@
 
 	jw_object_begin(&jw, 0);
 	jw_object_intmax(&jw, "filter_not_present", count_bloom_filter_not_present);
-	jw_object_intmax(&jw, "zero_length_filter", count_bloom_filter_length_zero);
 	jw_object_intmax(&jw, "maybe", count_bloom_filter_maybe);
 	jw_object_intmax(&jw, "definitely_not", count_bloom_filter_definitely_not);
 	jw_object_intmax(&jw, "false_positive", count_bloom_filter_false_positive);
@@ -670,9 +668,10 @@
 {
 	struct pathspec_item *pi;
 	char *path_alloc = NULL;
-	const char *path;
+	const char *path, *p;
 	int last_index;
-	int len;
+	size_t len;
+	int path_component_nr = 1;
 
 	if (!revs->commits)
 		return;
@@ -697,16 +696,45 @@
 
 	/* remove single trailing slash from path, if needed */
 	if (pi->match[last_index] == '/') {
-	    path_alloc = xstrdup(pi->match);
-	    path_alloc[last_index] = '\0';
-	    path = path_alloc;
+		path_alloc = xstrdup(pi->match);
+		path_alloc[last_index] = '\0';
+		path = path_alloc;
 	} else
-	    path = pi->match;
+		path = pi->match;
 
 	len = strlen(path);
+	if (!len) {
+		revs->bloom_filter_settings = NULL;
+		return;
+	}
 
-	revs->bloom_key = xmalloc(sizeof(struct bloom_key));
-	fill_bloom_key(path, len, revs->bloom_key, revs->bloom_filter_settings);
+	p = path;
+	while (*p) {
+		/*
+		 * At this point, the path is normalized to use Unix-style
+		 * path separators. This is required due to how the
+		 * changed-path Bloom filters store the paths.
+		 */
+		if (*p == '/')
+			path_component_nr++;
+		p++;
+	}
+
+	revs->bloom_keys_nr = path_component_nr;
+	ALLOC_ARRAY(revs->bloom_keys, revs->bloom_keys_nr);
+
+	fill_bloom_key(path, len, &revs->bloom_keys[0],
+		       revs->bloom_filter_settings);
+	path_component_nr = 1;
+
+	p = path + len - 1;
+	while (p > path) {
+		if (*p == '/')
+			fill_bloom_key(path, p - path,
+				       &revs->bloom_keys[path_component_nr++],
+				       revs->bloom_filter_settings);
+		p--;
+	}
 
 	if (trace2_is_enabled() && !bloom_filter_atexit_registered) {
 		atexit(trace2_bloom_filter_statistics_atexit);
@@ -720,12 +748,12 @@
 						 struct commit *commit)
 {
 	struct bloom_filter *filter;
-	int result;
+	int result = 1, j;
 
 	if (!revs->repo->objects->commit_graph)
 		return -1;
 
-	if (commit->generation == GENERATION_NUMBER_INFINITY)
+	if (commit_graph_generation(commit) == GENERATION_NUMBER_INFINITY)
 		return -1;
 
 	filter = get_bloom_filter(revs->repo, commit, 0);
@@ -735,15 +763,12 @@
 		return -1;
 	}
 
-	if (!filter->len) {
-		count_bloom_filter_length_zero++;
-		return -1;
+	for (j = 0; result && j < revs->bloom_keys_nr; j++) {
+		result = bloom_filter_contains(filter,
+					       &revs->bloom_keys[j],
+					       revs->bloom_filter_settings);
 	}
 
-	result = bloom_filter_contains(filter,
-				       revs->bloom_key,
-				       revs->bloom_filter_settings);
-
 	if (result)
 		count_bloom_filter_maybe++;
 	else
@@ -782,7 +807,7 @@
 			return REV_TREE_SAME;
 	}
 
-	if (revs->bloom_key && !nth_parent) {
+	if (revs->bloom_keys_nr && !nth_parent) {
 		bloom_ret = check_maybe_different_in_bloom_filter(revs, commit);
 
 		if (bloom_ret == 0)
@@ -791,9 +816,7 @@
 
 	tree_difference = REV_TREE_SAME;
 	revs->pruning.flags.has_changes = 0;
-	if (diff_tree_oid(&t1->object.oid, &t2->object.oid, "",
-			   &revs->pruning) < 0)
-		return REV_TREE_DIFFERENT;
+	diff_tree_oid(&t1->object.oid, &t2->object.oid, "", &revs->pruning);
 
 	if (!nth_parent)
 		if (bloom_ret == 1 && tree_difference == REV_TREE_SAME)
@@ -804,7 +827,6 @@
 
 static int rev_same_tree_as_empty(struct rev_info *revs, struct commit *commit)
 {
-	int retval;
 	struct tree *t1 = get_commit_tree(commit);
 
 	if (!t1)
@@ -812,9 +834,9 @@
 
 	tree_difference = REV_TREE_SAME;
 	revs->pruning.flags.has_changes = 0;
-	retval = diff_tree_oid(NULL, &t1->object.oid, "", &revs->pruning);
+	diff_tree_oid(NULL, &t1->object.oid, "", &revs->pruning);
 
-	return retval >= 0 && (tree_difference == REV_TREE_SAME);
+	return tree_difference == REV_TREE_SAME;
 }
 
 struct treesame_state {
@@ -1410,7 +1432,8 @@
 				continue;
 			break;
 		}
-		if (revs->min_age != -1 && (commit->date > revs->min_age))
+		if (revs->min_age != -1 && (commit->date > revs->min_age) &&
+		    !revs->line_level_traverse)
 			continue;
 		date = commit->date;
 		p = &commit_list_insert(commit, p)->next;
@@ -1609,7 +1632,7 @@
 {
 	struct worktree **worktrees, **p;
 
-	worktrees = get_worktrees(0);
+	worktrees = get_worktrees();
 	for (p = worktrees; *p; p++) {
 		struct worktree *wt = *p;
 
@@ -1697,7 +1720,7 @@
 	if (revs->single_worktree)
 		return;
 
-	worktrees = get_worktrees(0);
+	worktrees = get_worktrees();
 	for (p = worktrees; *p; p++) {
 		struct worktree *wt = *p;
 		struct index_state istate = { NULL };
@@ -3320,7 +3343,7 @@
 	struct topo_walk_info *info = revs->topo_walk_info;
 	struct commit *c;
 	while ((c = prio_queue_peek(&info->explore_queue)) &&
-	       c->generation >= gen_cutoff)
+	       commit_graph_generation(c) >= gen_cutoff)
 		explore_walk_step(revs);
 }
 
@@ -3336,7 +3359,7 @@
 	if (parse_commit_gently(c, 1) < 0)
 		return;
 
-	explore_to_depth(revs, c->generation);
+	explore_to_depth(revs, commit_graph_generation(c));
 
 	for (p = c->parents; p; p = p->next) {
 		struct commit *parent = p->item;
@@ -3360,7 +3383,7 @@
 	struct topo_walk_info *info = revs->topo_walk_info;
 	struct commit *c;
 	while ((c = prio_queue_peek(&info->indegree_queue)) &&
-	       c->generation >= gen_cutoff)
+	       commit_graph_generation(c) >= gen_cutoff)
 		indegree_walk_step(revs);
 }
 
@@ -3413,6 +3436,7 @@
 	info->min_generation = GENERATION_NUMBER_INFINITY;
 	for (list = revs->commits; list; list = list->next) {
 		struct commit *c = list->item;
+		uint32_t generation;
 
 		if (parse_commit_gently(c, 1))
 			continue;
@@ -3420,8 +3444,9 @@
 		test_flag_and_insert(&info->explore_queue, c, TOPO_WALK_EXPLORED);
 		test_flag_and_insert(&info->indegree_queue, c, TOPO_WALK_INDEGREE);
 
-		if (c->generation < info->min_generation)
-			info->min_generation = c->generation;
+		generation = commit_graph_generation(c);
+		if (generation < info->min_generation)
+			info->min_generation = generation;
 
 		*(indegree_slab_at(&info->indegree, c)) = 1;
 
@@ -3472,6 +3497,7 @@
 	for (p = commit->parents; p; p = p->next) {
 		struct commit *parent = p->item;
 		int *pi;
+		uint32_t generation;
 
 		if (parent->object.flags & UNINTERESTING)
 			continue;
@@ -3479,8 +3505,9 @@
 		if (parse_commit_gently(parent, 1) < 0)
 			continue;
 
-		if (parent->generation < info->min_generation) {
-			info->min_generation = parent->generation;
+		generation = commit_graph_generation(parent);
+		if (generation < info->min_generation) {
+			info->min_generation = generation;
 			compute_indegrees_to_depth(revs, info->min_generation);
 		}
 
diff --git a/revision.h b/revision.h
index 93491b7..889216c 100644
--- a/revision.h
+++ b/revision.h
@@ -37,6 +37,10 @@
 
 /* WARNING: This is also used as REACHABLE in commit-graph.c. */
 #define PULL_MERGE	(1u<<15)
+
+#define TOPO_WALK_EXPLORED	(1u<<23)
+#define TOPO_WALK_INDEGREE	(1u<<24)
+
 /*
  * Indicates object was reached by traversal. i.e. not given by user on
  * command-line or stdin.
@@ -48,9 +52,6 @@
 #define TRACK_LINEAR	(1u<<26)
 #define ALL_REV_FLAGS	(((1u<<11)-1) | NOT_USER_GIVEN | TRACK_LINEAR | PULL_MERGE)
 
-#define TOPO_WALK_EXPLORED	(1u<<27)
-#define TOPO_WALK_INDEGREE	(1u<<28)
-
 #define DECORATE_SHORT_REFS	1
 #define DECORATE_FULL_REFS	2
 
@@ -300,8 +301,10 @@
 	struct topo_walk_info *topo_walk_info;
 
 	/* Commit graph bloom filter fields */
-	/* The bloom filter key for the pathspec */
-	struct bloom_key *bloom_key;
+	/* The bloom filter key(s) for the pathspec */
+	struct bloom_key *bloom_keys;
+	int bloom_keys_nr;
+
 	/*
 	 * The bloom filter settings used to generate the key.
 	 * This is loaded from the commit-graph being used.
diff --git a/run-command.c b/run-command.c
index 9b3a57d..a735e38 100644
--- a/run-command.c
+++ b/run-command.c
@@ -1039,6 +1039,7 @@
 	cmd.silent_exec_failure = opt & RUN_SILENT_EXEC_FAILURE ? 1 : 0;
 	cmd.use_shell = opt & RUN_USING_SHELL ? 1 : 0;
 	cmd.clean_on_exit = opt & RUN_CLEAN_ON_EXIT ? 1 : 0;
+	cmd.wait_after_clean = opt & RUN_WAIT_AFTER_CLEAN ? 1 : 0;
 	cmd.dir = dir;
 	cmd.env = env;
 	cmd.trace2_child_class = tr2_class;
diff --git a/run-command.h b/run-command.h
index 191dfcd..ef3071a 100644
--- a/run-command.h
+++ b/run-command.h
@@ -229,6 +229,7 @@
 #define RUN_SILENT_EXEC_FAILURE 8
 #define RUN_USING_SHELL 16
 #define RUN_CLEAN_ON_EXIT 32
+#define RUN_WAIT_AFTER_CLEAN 64
 
 /**
  * Convenience functions that encapsulate a sequence of
diff --git a/send-pack.c b/send-pack.c
index 0abee22..d671ab5 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -363,6 +363,7 @@
 	int atomic_supported = 0;
 	int use_push_options = 0;
 	int push_options_supported = 0;
+	int object_format_supported = 0;
 	unsigned cmds_sent = 0;
 	int ret;
 	struct async demux;
@@ -389,6 +390,9 @@
 	if (server_supports("push-options"))
 		push_options_supported = 1;
 
+	if (!server_supports_hash(the_hash_algo->name, &object_format_supported))
+		die(_("the receiving end does not support this repository's hash algorithm"));
+
 	if (args->push_cert != SEND_PACK_PUSH_CERT_NEVER) {
 		int len;
 		push_cert_nonce = server_feature_value("push-cert", &len);
@@ -406,7 +410,7 @@
 
 	if (!remote_refs) {
 		fprintf(stderr, "No refs in common and none specified; doing nothing.\n"
-			"Perhaps you should specify a branch such as 'master'.\n");
+			"Perhaps you should specify a branch.\n");
 		return 0;
 	}
 	if (args->atomic && !atomic_supported)
@@ -429,6 +433,8 @@
 		strbuf_addstr(&cap_buf, " atomic");
 	if (use_push_options)
 		strbuf_addstr(&cap_buf, " push-options");
+	if (object_format_supported)
+		strbuf_addf(&cap_buf, " object-format=%s", the_hash_algo->name);
 	if (agent_supported)
 		strbuf_addf(&cap_buf, " agent=%s", git_user_agent_sanitized());
 
diff --git a/serve.c b/serve.c
index c046926..fbd2fcd 100644
--- a/serve.c
+++ b/serve.c
@@ -22,6 +22,14 @@
 	return 1;
 }
 
+static int object_format_advertise(struct repository *r,
+				   struct strbuf *value)
+{
+	if (value)
+		strbuf_addstr(value, r->hash_algo->name);
+	return 1;
+}
+
 struct protocol_capability {
 	/*
 	 * The name of the capability.  The server uses this name when
@@ -57,6 +65,7 @@
 	{ "ls-refs", always_advertise, ls_refs },
 	{ "fetch", upload_pack_advertise, upload_pack_v2 },
 	{ "server-option", always_advertise, NULL },
+	{ "object-format", object_format_advertise, NULL },
 };
 
 static void advertise_capabilities(void)
@@ -153,6 +162,22 @@
 	return 0;
 }
 
+static void check_algorithm(struct repository *r, struct argv_array *keys)
+{
+	int client = GIT_HASH_SHA1, server = hash_algo_by_ptr(r->hash_algo);
+	const char *algo_name;
+
+	if (has_capability(keys, "object-format", &algo_name)) {
+		client = hash_algo_by_name(algo_name);
+		if (client == GIT_HASH_UNKNOWN)
+			die("unknown object format '%s'", algo_name);
+	}
+
+	if (client != server)
+		die("mismatched object format: server %s; client %s\n",
+		    r->hash_algo->name, hash_algos[client].name);
+}
+
 enum request_state {
 	PROCESS_REQUEST_KEYS,
 	PROCESS_REQUEST_DONE,
@@ -225,6 +250,8 @@
 	if (!command)
 		die("no command requested");
 
+	check_algorithm(the_repository, &keys);
+
 	command->command(the_repository, &keys, &reader);
 
 	argv_array_clear(&keys);
diff --git a/setup.c b/setup.c
index eb066db..78e7ae1 100644
--- a/setup.c
+++ b/setup.c
@@ -447,6 +447,54 @@
 	return 0;
 }
 
+enum extension_result {
+	EXTENSION_ERROR = -1, /* compatible with error(), etc */
+	EXTENSION_UNKNOWN = 0,
+	EXTENSION_OK = 1
+};
+
+/*
+ * Do not add new extensions to this function. It handles extensions which are
+ * respected even in v0-format repositories for historical compatibility.
+ */
+static enum extension_result handle_extension_v0(const char *var,
+						 const char *value,
+						 const char *ext,
+						 struct repository_format *data)
+{
+		if (!strcmp(ext, "noop")) {
+			return EXTENSION_OK;
+		} else if (!strcmp(ext, "preciousobjects")) {
+			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")) {
+			data->worktree_config = git_config_bool(var, value);
+			return EXTENSION_OK;
+		}
+
+		return EXTENSION_UNKNOWN;
+}
+
+/*
+ * Record any new extensions in this function.
+ */
+static enum extension_result handle_extension(const char *var,
+					      const char *value,
+					      const char *ext,
+					      struct repository_format *data)
+{
+	if (!strcmp(ext, "noop-v1")) {
+		return EXTENSION_OK;
+	}
+
+	return EXTENSION_UNKNOWN;
+}
+
 static int check_repo_format(const char *var, const char *value, void *vdata)
 {
 	struct repository_format *data = vdata;
@@ -455,24 +503,25 @@
 	if (strcmp(var, "core.repositoryformatversion") == 0)
 		data->version = git_config_int(var, value);
 	else if (skip_prefix(var, "extensions.", &ext)) {
-		data->has_extensions = 1;
-		/*
-		 * record any known extensions here; otherwise,
-		 * we fall through to recording it as unknown, and
-		 * check_repository_format will complain
-		 */
-		if (!strcmp(ext, "noop"))
-			;
-		else if (!strcmp(ext, "preciousobjects"))
-			data->precious_objects = git_config_bool(var, value);
-		else if (!strcmp(ext, "partialclone")) {
-			if (!value)
-				return config_error_nonbool(var);
-			data->partial_clone = xstrdup(value);
-		} else if (!strcmp(ext, "worktreeconfig"))
-			data->worktree_config = git_config_bool(var, value);
-		else
+		switch (handle_extension_v0(var, value, ext, data)) {
+		case EXTENSION_ERROR:
+			return -1;
+		case EXTENSION_OK:
+			return 0;
+		case EXTENSION_UNKNOWN:
+			break;
+		}
+
+		switch (handle_extension(var, value, ext, data)) {
+		case EXTENSION_ERROR:
+			return -1;
+		case EXTENSION_OK:
+			string_list_append(&data->v1_only_extensions, ext);
+			return 0;
+		case EXTENSION_UNKNOWN:
 			string_list_append(&data->unknown_extensions, ext);
+			return 0;
+		}
 	}
 
 	return read_worktree_config(var, value, vdata);
@@ -507,16 +556,11 @@
 		die("%s", err.buf);
 	}
 
-	if (candidate->version >= 1) {
-		repository_format_precious_objects = candidate->precious_objects;
-		set_repository_format_partial_clone(candidate->partial_clone);
-		repository_format_worktree_config = candidate->worktree_config;
-	} else {
-		repository_format_precious_objects = 0;
-		set_repository_format_partial_clone(NULL);
-		repository_format_worktree_config = 0;
-	}
+	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);
 
 	if (repository_format_worktree_config) {
 		/*
@@ -559,13 +603,16 @@
 	if (repo_fmt.version >= target_version)
 		return 0;
 
-	if (verify_repository_format(&repo_fmt, &err) < 0 ||
-	    (!repo_fmt.version && repo_fmt.has_extensions)) {
-		warning("unable to upgrade repository format from %d to %d: %s",
-			repo_fmt.version, target_version, err.buf);
+	if (verify_repository_format(&repo_fmt, &err) < 0) {
+		error("cannot upgrade repository format from %d to %d: %s",
+		      repo_fmt.version, target_version, err.buf);
 		strbuf_release(&err);
 		return -1;
 	}
+	if (!repo_fmt.version && repo_fmt.unknown_extensions.nr)
+		return error("cannot upgrade repository format: "
+			     "unknown extension %s",
+			     repo_fmt.unknown_extensions.items[0].string);
 
 	strbuf_addf(&repo_version, "%d", target_version);
 	git_config_set("core.repositoryformatversion", repo_version.buf);
@@ -592,6 +639,7 @@
 void clear_repository_format(struct repository_format *format)
 {
 	string_list_clear(&format->unknown_extensions, 0);
+	string_list_clear(&format->v1_only_extensions, 0);
 	free(format->work_tree);
 	free(format->partial_clone);
 	init_repository_format(format);
@@ -617,6 +665,18 @@
 		return -1;
 	}
 
+	if (format->version == 0 && format->v1_only_extensions.nr) {
+		int i;
+
+		strbuf_addstr(err,
+			      _("repo version is 0, but v1-only extensions found:"));
+
+		for (i = 0; i < format->v1_only_extensions.nr; i++)
+			strbuf_addf(err, "\n\t%s",
+				    format->v1_only_extensions.items[i].string);
+		return -1;
+	}
+
 	return 0;
 }
 
@@ -1308,6 +1368,7 @@
 		fmt = &repo_fmt;
 	check_repository_format_gently(get_git_dir(), fmt, NULL);
 	startup_info->have_repository = 1;
+	repo_set_hash_algo(the_repository, fmt->hash_algo);
 	clear_repository_format(&repo_fmt);
 }
 
diff --git a/shallow.c b/shallow.c
index b826de9..91b9e10 100644
--- a/shallow.c
+++ b/shallow.c
@@ -110,6 +110,10 @@
  * supports a "valid" flag.
  */
 define_commit_slab(commit_depth, int *);
+static void free_depth_in_slab(int **ptr)
+{
+	FREE_AND_NULL(*ptr);
+}
 struct commit_list *get_shallow_commits(struct object_array *heads, int depth,
 		int shallow_flag, int not_shallow_flag)
 {
@@ -176,15 +180,7 @@
 			}
 		}
 	}
-	for (i = 0; i < depths.slab_count; i++) {
-		int j;
-
-		if (!depths.slab[i])
-			continue;
-		for (j = 0; j < depths.slab_size; j++)
-			free(depths.slab[i][j]);
-	}
-	clear_commit_depth(&depths);
+	deep_clear_commit_depth(&depths, free_depth_in_slab);
 
 	return result;
 }
diff --git a/t/helper/test-oid-array.c b/t/helper/test-oid-array.c
index ce9fd5f..b16cd0b 100644
--- a/t/helper/test-oid-array.c
+++ b/t/helper/test-oid-array.c
@@ -12,6 +12,9 @@
 {
 	struct oid_array array = OID_ARRAY_INIT;
 	struct strbuf line = STRBUF_INIT;
+	int nongit_ok;
+
+	setup_git_directory_gently(&nongit_ok);
 
 	while (strbuf_getline(&line, stdin) != EOF) {
 		const char *arg;
diff --git a/t/helper/test-reach.c b/t/helper/test-reach.c
index a027217..14a3655 100644
--- a/t/helper/test-reach.c
+++ b/t/helper/test-reach.c
@@ -67,7 +67,7 @@
 			die("failed to load commit for input %s resulting in oid %s\n",
 			    buf.buf, oid_to_hex(&oid));
 
-		c = object_as_type(r, peeled, OBJ_COMMIT, 0);
+		c = object_as_type(peeled, OBJ_COMMIT, 0);
 
 		if (!c)
 			die("failed to load commit for input %s resulting in oid %s\n",
@@ -108,7 +108,7 @@
 	else if (!strcmp(av[1], "in_merge_bases"))
 		printf("%s(A,B):%d\n", av[1], in_merge_bases(A, B));
 	else if (!strcmp(av[1], "is_descendant_of"))
-		printf("%s(A,X):%d\n", av[1], is_descendant_of(A, X));
+		printf("%s(A,X):%d\n", av[1], repo_is_descendant_of(r, A, X));
 	else if (!strcmp(av[1], "get_merge_bases_many")) {
 		struct commit_list *list = get_merge_bases_many(A, X_nr, X_array);
 		printf("%s(A,X):\n", av[1]);
diff --git a/t/helper/test-ref-store.c b/t/helper/test-ref-store.c
index 799fc00..759e69d 100644
--- a/t/helper/test-ref-store.c
+++ b/t/helper/test-ref-store.c
@@ -37,7 +37,7 @@
 
 		*refs = get_submodule_ref_store(gitdir);
 	} else if (skip_prefix(argv[0], "worktree:", &gitdir)) {
-		struct worktree **p, **worktrees = get_worktrees(0);
+		struct worktree **p, **worktrees = get_worktrees();
 
 		for (p = worktrees; *p; p++) {
 			struct worktree *wt = *p;
diff --git a/t/lib-git-svn.sh b/t/lib-git-svn.sh
index 7d248e6..547eb3c 100644
--- a/t/lib-git-svn.sh
+++ b/t/lib-git-svn.sh
@@ -78,21 +78,24 @@
 }
 
 convert_to_rev_db () {
-	perl -w -- - "$@" <<\EOF
+	perl -w -- - "$(test_oid rawsz)" "$@" <<\EOF
 use strict;
+my $oidlen = shift;
 @ARGV == 2 or die "usage: convert_to_rev_db <input> <output>";
+my $record_size = $oidlen + 4;
+my $hexlen = $oidlen * 2;
 open my $wr, '+>', $ARGV[1] or die "$!: couldn't open: $ARGV[1]";
 open my $rd, '<', $ARGV[0] or die "$!: couldn't open: $ARGV[0]";
 my $size = (stat($rd))[7];
-($size % 24) == 0 or die "Inconsistent size: $size";
-while (sysread($rd, my $buf, 24) == 24) {
-	my ($r, $c) = unpack('NH40', $buf);
-	my $offset = $r * 41;
+($size % $record_size) == 0 or die "Inconsistent size: $size";
+while (sysread($rd, my $buf, $record_size) == $record_size) {
+	my ($r, $c) = unpack("NH$hexlen", $buf);
+	my $offset = $r * ($hexlen + 1);
 	seek $wr, 0, 2 or die $!;
 	my $pos = tell $wr;
 	if ($pos < $offset) {
-		for (1 .. (($offset - $pos) / 41)) {
-			print $wr (('0' x 40),"\n") or die $!;
+		for (1 .. (($offset - $pos) / ($hexlen + 1))) {
+			print $wr (('0' x $hexlen),"\n") or die $!;
 		}
 	}
 	seek $wr, $offset, 0 or die $!;
diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh
index 64fc648..07c822c 100644
--- a/t/lib-submodule-update.sh
+++ b/t/lib-submodule-update.sh
@@ -183,7 +183,7 @@
 	)
 }
 
-test_git_directory_exists() {
+test_git_directory_exists () {
 	test -e ".git/modules/$1" &&
 	if test -f sub1/.git
 	then
@@ -303,13 +303,17 @@
 # update" is run. And even then that command doesn't delete the work tree of
 # a removed submodule.
 #
+# The first argument of the callback function will be the name of the submodule.
+#
 # Removing a submodule containing a .git directory must fail even when forced
-# to protect the history!
+# to protect the history! If we are testing this case, the second argument of
+# the callback function will be 'test_must_fail', else it will be the empty
+# string.
 #
 
-# Internal function; use test_submodule_switch() or
-# test_submodule_forced_switch() instead.
-test_submodule_switch_common() {
+# Internal function; use test_submodule_switch_func(), test_submodule_switch(),
+# or test_submodule_forced_switch() instead.
+test_submodule_switch_common () {
 	command="$1"
 	######################### Appearing submodule #########################
 	# Switching to a commit letting a submodule appear creates empty dir ...
@@ -443,7 +447,7 @@
 		(
 			cd submodule_update &&
 			git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
-			test_must_fail $command replace_sub1_with_directory &&
+			$command replace_sub1_with_directory test_must_fail &&
 			test_superproject_content origin/add_sub1 &&
 			test_submodule_content sub1 origin/add_sub1
 		)
@@ -456,7 +460,7 @@
 			cd submodule_update &&
 			git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
 			replace_gitfile_with_git_dir sub1 &&
-			test_must_fail $command replace_sub1_with_directory &&
+			$command replace_sub1_with_directory test_must_fail &&
 			test_superproject_content origin/add_sub1 &&
 			test_git_directory_is_unchanged sub1 &&
 			test_submodule_content sub1 origin/add_sub1
@@ -470,7 +474,7 @@
 		(
 			cd submodule_update &&
 			git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
-			test_must_fail $command replace_sub1_with_file &&
+			$command replace_sub1_with_file test_must_fail &&
 			test_superproject_content origin/add_sub1 &&
 			test_submodule_content sub1 origin/add_sub1
 		)
@@ -484,7 +488,7 @@
 			cd submodule_update &&
 			git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
 			replace_gitfile_with_git_dir sub1 &&
-			test_must_fail $command replace_sub1_with_file &&
+			$command replace_sub1_with_file test_must_fail &&
 			test_superproject_content origin/add_sub1 &&
 			test_git_directory_is_unchanged sub1 &&
 			test_submodule_content sub1 origin/add_sub1
@@ -559,15 +563,28 @@
 # conditions, set the appropriate KNOWN_FAILURE_* variable used in the tests
 # below to 1.
 #
-# Use as follows:
+# The first argument of the callback function will be the name of the submodule.
+#
+# Removing a submodule containing a .git directory must fail even when forced
+# to protect the history! If we are testing this case, the second argument of
+# the callback function will be 'test_must_fail', else it will be the empty
+# string.
+#
+# The following example uses `git some-command` as an example command to be
+# tested. It updates the worktree and index to match a target, but not any
+# submodule directories.
 #
 # my_func () {
-#   target=$1
-#   # Do something here that updates the worktree and index to match target,
-#   # but not any submodule directories.
+#   ...prepare for `git some-command` to be run...
+#   $2 git some-command "$1" &&
+#   if test -n "$2"
+#   then
+#     return
+#   fi &&
+#   ...check the state after git some-command is run...
 # }
-# test_submodule_switch "my_func"
-test_submodule_switch () {
+# test_submodule_switch_func "my_func"
+test_submodule_switch_func () {
 	command="$1"
 	test_submodule_switch_common "$command"
 
@@ -580,17 +597,33 @@
 			cd submodule_update &&
 			git branch -t add_sub1 origin/add_sub1 &&
 			>sub1 &&
-			test_must_fail $command add_sub1 &&
+			$command add_sub1 test_must_fail &&
 			test_superproject_content origin/no_submodule &&
 			test_must_be_empty sub1
 		)
 	'
 }
 
+# Ensures that the that the arg either contains "test_must_fail" or is empty.
+may_only_be_test_must_fail () {
+	test -z "$1" || test "$1" = test_must_fail || die
+}
+
+git_test_func () {
+	may_only_be_test_must_fail "$2" &&
+	$2 git $gitcmd "$1"
+}
+
+test_submodule_switch () {
+	gitcmd="$1"
+	test_submodule_switch_func "git_test_func"
+}
+
 # Same as test_submodule_switch(), except that throwing away local changes in
 # the superproject is allowed.
 test_submodule_forced_switch () {
-	command="$1"
+	gitcmd="$1"
+	command="git_test_func"
 	KNOWN_FAILURE_FORCED_SWITCH_TESTS=1
 	test_submodule_switch_common "$command"
 
@@ -631,8 +664,8 @@
 
 # Internal function; use test_submodule_switch_recursing_with_args() or
 # test_submodule_forced_switch_recursing_with_args() instead.
-test_submodule_recursing_with_args_common() {
-	command="$1"
+test_submodule_recursing_with_args_common () {
+	command="$1 --recurse-submodules"
 
 	######################### Appearing submodule #########################
 	# Switching to a commit letting a submodule appear checks it out ...
@@ -840,7 +873,7 @@
 # test_submodule_switch_recursing_with_args "$GIT_COMMAND"
 test_submodule_switch_recursing_with_args () {
 	cmd_args="$1"
-	command="git $cmd_args --recurse-submodules"
+	command="git $cmd_args"
 	test_submodule_recursing_with_args_common "$command"
 
 	RESULTDS=success
@@ -957,7 +990,7 @@
 # away local changes in the superproject is allowed.
 test_submodule_forced_switch_recursing_with_args () {
 	cmd_args="$1"
-	command="git $cmd_args --recurse-submodules"
+	command="git $cmd_args"
 	test_submodule_recursing_with_args_common "$command"
 
 	RESULT=success
diff --git a/t/perf/p1400-update-ref.sh b/t/perf/p1400-update-ref.sh
new file mode 100755
index 0000000..d275a81
--- /dev/null
+++ b/t/perf/p1400-update-ref.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+test_description="Tests performance of update-ref"
+
+. ./perf-lib.sh
+
+test_perf_fresh_repo
+
+test_expect_success "setup" '
+	test_commit PRE &&
+	test_commit POST &&
+	printf "create refs/heads/%d PRE\n" $(test_seq 1000) >create &&
+	printf "update refs/heads/%d POST PRE\n" $(test_seq 1000) >update &&
+	printf "delete refs/heads/%d POST\n" $(test_seq 1000) >delete
+'
+
+test_perf "update-ref" '
+	for i in $(test_seq 1000)
+	do
+		git update-ref refs/heads/branch PRE &&
+		git update-ref refs/heads/branch POST PRE &&
+		git update-ref -d refs/heads/branch
+	done
+'
+
+test_perf "update-ref --stdin" '
+	git update-ref --stdin <create &&
+	git update-ref --stdin <update &&
+	git update-ref --stdin <delete
+'
+
+test_done
diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
index 2ff176c..90bf1db 100755
--- a/t/t0000-basic.sh
+++ b/t/t0000-basic.sh
@@ -1271,4 +1271,22 @@
 	test $len = 4098
 '
 
+test_expect_success 'test_must_fail on a failing git command' '
+	test_must_fail git notacommand
+'
+
+test_expect_success 'test_must_fail on a failing git command with env' '
+	test_must_fail env var1=a var2=b git notacommand
+'
+
+test_expect_success 'test_must_fail rejects a non-git command' '
+	! test_must_fail grep ^$ notafile 2>err &&
+	grep -F "test_must_fail: only '"'"'git'"'"' is allowed" err
+'
+
+test_expect_success 'test_must_fail rejects a non-git command with env' '
+	! test_must_fail env var1=a var2=b grep ^$ notafile 2>err &&
+	grep -F "test_must_fail: only '"'"'git'"'"' is allowed" err
+'
+
 test_done
diff --git a/t/t0001-init.sh b/t/t0001-init.sh
index 1edd5ae..6d24679 100755
--- a/t/t0001-init.sh
+++ b/t/t0001-init.sh
@@ -464,4 +464,30 @@
 	grep "Needed a single revision" output.txt
 '
 
+test_expect_success '--initial-branch' '
+	git init --initial-branch=hello initial-branch-option &&
+	git -C initial-branch-option symbolic-ref HEAD >actual &&
+	echo refs/heads/hello >expect &&
+	test_cmp expect actual &&
+
+	: re-initializing should not change the branch name &&
+	git init --initial-branch=ignore initial-branch-option 2>err &&
+	test_i18ngrep "ignored --initial-branch" err &&
+	git -C initial-branch-option symbolic-ref HEAD >actual &&
+	grep hello actual
+'
+
+test_expect_success 'overridden default initial branch name (config)' '
+	test_config_global init.defaultBranch nmb &&
+	git init initial-branch-config &&
+	git -C initial-branch-config symbolic-ref HEAD >actual &&
+	grep nmb actual
+'
+
+test_expect_success 'invalid default branch name' '
+	test_config_global init.defaultBranch "with space" &&
+	test_must_fail git init initial-branch-invalid 2>err &&
+	test_i18ngrep "invalid branch name" err
+'
+
 test_done
diff --git a/t/t0410-partial-clone.sh b/t/t0410-partial-clone.sh
index 463dc3a..6aa0f31 100755
--- a/t/t0410-partial-clone.sh
+++ b/t/t0410-partial-clone.sh
@@ -42,14 +42,25 @@
 	test_cmp_config -C client 1 core.repositoryformatversion
 '
 
-test_expect_success 'convert shallow clone to partial clone must fail with any extension' '
+test_expect_success 'convert to partial clone with noop extension' '
 	rm -fr server client &&
 	test_create_repo server &&
 	test_commit -C server my_commit 1 &&
 	test_commit -C server my_commit2 1 &&
 	git clone --depth=1 "file://$(pwd)/server" client &&
 	test_cmp_config -C client 0 core.repositoryformatversion &&
-	git -C client config extensions.partialclone origin &&
+	git -C client config extensions.noop true &&
+	git -C client fetch --unshallow --filter="blob:none"
+'
+
+test_expect_success 'converting to partial clone fails with unrecognized extension' '
+	rm -fr server client &&
+	test_create_repo server &&
+	test_commit -C server my_commit 1 &&
+	test_commit -C server my_commit2 1 &&
+	git clone --depth=1 "file://$(pwd)/server" client &&
+	test_cmp_config -C client 0 core.repositoryformatversion &&
+	git -C client config extensions.nonsense true &&
 	test_must_fail git -C client fetch --unshallow --filter="blob:none"
 '
 
diff --git a/t/t1013-read-tree-submodule.sh b/t/t1013-read-tree-submodule.sh
index 91a6faf..b6df744 100755
--- a/t/t1013-read-tree-submodule.sh
+++ b/t/t1013-read-tree-submodule.sh
@@ -12,8 +12,8 @@
 
 test_submodule_forced_switch_recursing_with_args "read-tree -u --reset"
 
-test_submodule_switch "git read-tree -u -m"
+test_submodule_switch "read-tree -u -m"
 
-test_submodule_forced_switch "git read-tree -u --reset"
+test_submodule_forced_switch "read-tree -u --reset"
 
 test_done
diff --git a/t/t1050-large.sh b/t/t1050-large.sh
index 184b479..6a56d1c 100755
--- a/t/t1050-large.sh
+++ b/t/t1050-large.sh
@@ -12,6 +12,7 @@
 }
 
 test_expect_success setup '
+	test_oid_init &&
 	# clone does not allow us to pass core.bigfilethreshold to
 	# new repos, so set core.bigfilethreshold globally
 	git config --global core.bigfilethreshold 200k &&
@@ -64,7 +65,7 @@
 	test $count = 1 &&
 	cnt=$(git show-index <"$idx" | wc -l) &&
 	test $cnt = 2 &&
-	for l in .git/objects/??/??????????????????????????????????????
+	for l in .git/objects/$OIDPATH_REGEX
 	do
 		test_path_is_file "$l" || continue
 		bad=t
@@ -177,7 +178,8 @@
 
 test_expect_success 'index-pack' '
 	git clone file://"$(pwd)"/.git foo &&
-	GIT_DIR=non-existent git index-pack --strict --verify foo/.git/objects/pack/*.pack
+	GIT_DIR=non-existent git index-pack --object-format=$(test_oid algo) \
+		--strict --verify foo/.git/objects/pack/*.pack
 '
 
 test_expect_success 'repack' '
diff --git a/t/t1302-repo-version.sh b/t/t1302-repo-version.sh
index ce4cff1..0acabb6 100755
--- a/t/t1302-repo-version.sh
+++ b/t/t1302-repo-version.sh
@@ -8,6 +8,10 @@
 . ./test-lib.sh
 
 test_expect_success 'setup' '
+	test_oid_cache <<-\EOF &&
+	version sha1:0
+	version sha256:1
+	EOF
 	cat >test.patch <<-\EOF &&
 	diff --git a/test.txt b/test.txt
 	new file mode 100644
@@ -23,7 +27,7 @@
 '
 
 test_expect_success 'gitdir selection on normal repos' '
-	echo 0 >expect &&
+	echo $(test_oid version) >expect &&
 	git config core.repositoryformatversion >actual &&
 	git -C test config core.repositoryformatversion >actual2 &&
 	test_cmp expect actual &&
@@ -83,6 +87,9 @@
 allow 1 noop
 abort 1 no-such-extension
 allow 0 no-such-extension
+allow 0 noop
+abort 0 noop-v1
+allow 1 noop-v1
 EOF
 
 test_expect_success 'precious-objects allowed' '
diff --git a/t/t1416-ref-transaction-hooks.sh b/t/t1416-ref-transaction-hooks.sh
new file mode 100755
index 0000000..da58d86
--- /dev/null
+++ b/t/t1416-ref-transaction-hooks.sh
@@ -0,0 +1,109 @@
+#!/bin/sh
+
+test_description='reference transaction hooks'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+	mkdir -p .git/hooks &&
+	test_commit PRE &&
+	test_commit POST &&
+	POST_OID=$(git rev-parse POST)
+'
+
+test_expect_success 'hook allows updating ref if successful' '
+	test_when_finished "rm .git/hooks/reference-transaction" &&
+	git reset --hard PRE &&
+	write_script .git/hooks/reference-transaction <<-\EOF &&
+		echo "$*" >>actual
+	EOF
+	cat >expect <<-EOF &&
+		prepared
+		committed
+	EOF
+	git update-ref HEAD POST &&
+	test_cmp expect actual
+'
+
+test_expect_success 'hook aborts updating ref in prepared state' '
+	test_when_finished "rm .git/hooks/reference-transaction" &&
+	git reset --hard PRE &&
+	write_script .git/hooks/reference-transaction <<-\EOF &&
+		if test "$1" = prepared
+		then
+			exit 1
+		fi
+	EOF
+	test_must_fail git update-ref HEAD POST 2>err &&
+	test_i18ngrep "ref updates aborted by hook" err
+'
+
+test_expect_success 'hook gets all queued updates in prepared state' '
+	test_when_finished "rm .git/hooks/reference-transaction actual" &&
+	git reset --hard PRE &&
+	write_script .git/hooks/reference-transaction <<-\EOF &&
+		if test "$1" = prepared
+		then
+			while read -r line
+			do
+				printf "%s\n" "$line"
+			done >actual
+		fi
+	EOF
+	cat >expect <<-EOF &&
+		$ZERO_OID $POST_OID HEAD
+		$ZERO_OID $POST_OID refs/heads/master
+	EOF
+	git update-ref HEAD POST <<-EOF &&
+		update HEAD $ZERO_OID $POST_OID
+		update refs/heads/master $ZERO_OID $POST_OID
+	EOF
+	test_cmp expect actual
+'
+
+test_expect_success 'hook gets all queued updates in committed state' '
+	test_when_finished "rm .git/hooks/reference-transaction actual" &&
+	git reset --hard PRE &&
+	write_script .git/hooks/reference-transaction <<-\EOF &&
+		if test "$1" = committed
+		then
+			while read -r line
+			do
+				printf "%s\n" "$line"
+			done >actual
+		fi
+	EOF
+	cat >expect <<-EOF &&
+		$ZERO_OID $POST_OID HEAD
+		$ZERO_OID $POST_OID refs/heads/master
+	EOF
+	git update-ref HEAD POST &&
+	test_cmp expect actual
+'
+
+test_expect_success 'hook gets all queued updates in aborted state' '
+	test_when_finished "rm .git/hooks/reference-transaction actual" &&
+	git reset --hard PRE &&
+	write_script .git/hooks/reference-transaction <<-\EOF &&
+		if test "$1" = aborted
+		then
+			while read -r line
+			do
+				printf "%s\n" "$line"
+			done >actual
+		fi
+	EOF
+	cat >expect <<-EOF &&
+		$ZERO_OID $POST_OID HEAD
+		$ZERO_OID $POST_OID refs/heads/master
+	EOF
+	git update-ref --stdin <<-EOF &&
+		start
+		update HEAD POST $ZERO_OID
+		update refs/heads/master POST $ZERO_OID
+		abort
+	EOF
+	test_cmp expect actual
+'
+
+test_done
diff --git a/t/t2013-checkout-submodule.sh b/t/t2013-checkout-submodule.sh
index 8f86b5f..b2bdd1f 100755
--- a/t/t2013-checkout-submodule.sh
+++ b/t/t2013-checkout-submodule.sh
@@ -68,8 +68,8 @@
 
 test_submodule_forced_switch_recursing_with_args "checkout -f"
 
-test_submodule_switch "git checkout"
+test_submodule_switch "checkout"
 
-test_submodule_forced_switch "git checkout -f"
+test_submodule_forced_switch "checkout -f"
 
 test_done
diff --git a/t/t2203-add-intent.sh b/t/t2203-add-intent.sh
index 8a5d550..cf0175a 100755
--- a/t/t2203-add-intent.sh
+++ b/t/t2203-add-intent.sh
@@ -240,7 +240,6 @@
 
 	hash_e=$(git hash-object empty) &&
 	hash_n=$(git hash-object not-empty) &&
-	hash_t=$(git hash-object -t tree /dev/null) &&
 
 	cat >expect.diff_p <<-EOF &&
 	diff --git a/empty b/empty
@@ -259,8 +258,8 @@
 	 create mode 100644 not-empty
 	EOF
 	cat >expect.diff_a <<-EOF &&
-	:000000 100644 0000000 $(git rev-parse --short $hash_t) A$(printf "\t")empty
-	:000000 100644 0000000 $(git rev-parse --short $hash_t) A$(printf "\t")not-empty
+	:000000 100644 0000000 0000000 A$(printf "\t")empty
+	:000000 100644 0000000 0000000 A$(printf "\t")not-empty
 	EOF
 
 	git add -N empty not-empty &&
diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh
index 1fd03ca..4c07341 100755
--- a/t/t3200-branch.sh
+++ b/t/t3200-branch.sh
@@ -402,7 +402,7 @@
 
 mv .git/config .git/config-saved
 
-test_expect_success 'git branch -m q q2 without config should succeed' '
+test_expect_success SHA1 'git branch -m q q2 without config should succeed' '
 	git branch -m q q2 &&
 	git branch -m q2 q
 '
@@ -870,7 +870,7 @@
 	>.git/config.lock &&
 	git branch locked &&
 	test_must_fail git branch --set-upstream-to locked 2>err &&
-	test_i18ngrep "could not lock config file .git/config: File exists" err
+	test_i18ngrep "could not lock config file .git/config" err
 '
 
 test_expect_success 'use --set-upstream-to modify HEAD' '
@@ -901,7 +901,7 @@
 	git branch --set-upstream-to locked &&
 	>.git/config.lock &&
 	test_must_fail git branch --unset-upstream 2>err &&
-	test_i18ngrep "could not lock config file .git/config: File exists" err
+	test_i18ngrep "could not lock config file .git/config" err
 '
 
 test_expect_success 'test --unset-upstream on HEAD' '
diff --git a/t/t3426-rebase-submodule.sh b/t/t3426-rebase-submodule.sh
index a2bba04..0ad3a07 100755
--- a/t/t3426-rebase-submodule.sh
+++ b/t/t3426-rebase-submodule.sh
@@ -17,10 +17,11 @@
 	git status -su >actual &&
 	ls -1pR * >>actual &&
 	test_cmp expect actual &&
-	git rebase "$1"
+	may_only_be_test_must_fail "$2" &&
+	$2 git rebase "$1"
 }
 
-test_submodule_switch "git_rebase"
+test_submodule_switch_func "git_rebase"
 
 git_rebase_interactive () {
 	git status -su >expect &&
@@ -35,10 +36,11 @@
 	test_cmp expect actual &&
 	set_fake_editor &&
 	echo "fake-editor.sh" >.git/info/exclude &&
-	git rebase -i "$1"
+	may_only_be_test_must_fail "$2" &&
+	$2 git rebase -i "$1"
 }
 
-test_submodule_switch "git_rebase_interactive"
+test_submodule_switch_func "git_rebase_interactive"
 
 test_expect_success 'rebase interactive ignores modified submodules' '
 	test_when_finished "rm -rf super sub" &&
diff --git a/t/t3512-cherry-pick-submodule.sh b/t/t3512-cherry-pick-submodule.sh
index bd78287..6ece1d8 100755
--- a/t/t3512-cherry-pick-submodule.sh
+++ b/t/t3512-cherry-pick-submodule.sh
@@ -7,7 +7,7 @@
 
 KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1
 KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
-test_submodule_switch "git cherry-pick"
+test_submodule_switch "cherry-pick"
 
 test_expect_success 'unrelated submodule/file conflict is ignored' '
 	test_create_repo sub &&
diff --git a/t/t3513-revert-submodule.sh b/t/t3513-revert-submodule.sh
index 5e39fcd..a759f12 100755
--- a/t/t3513-revert-submodule.sh
+++ b/t/t3513-revert-submodule.sh
@@ -15,7 +15,12 @@
 	git status -su >expect &&
 	ls -1pR * >>expect &&
 	tar cf "$TRASH_DIRECTORY/tmp.tar" * &&
-	git checkout "$1" &&
+	may_only_be_test_must_fail "$2" &&
+	$2 git checkout "$1" &&
+	if test -n "$2"
+	then
+		return
+	fi &&
 	git revert HEAD &&
 	rm -rf * &&
 	tar xf "$TRASH_DIRECTORY/tmp.tar" &&
@@ -26,6 +31,6 @@
 }
 
 KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1
-test_submodule_switch "git_revert"
+test_submodule_switch_func "git_revert"
 
 test_done
diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index 49decba..fb73a84 100755
--- a/t/t3701-add-interactive.sh
+++ b/t/t3701-add-interactive.sh
@@ -31,7 +31,16 @@
 # indicates a dumb terminal, so we set that variable, too.
 
 force_color () {
-	env GIT_PAGER_IN_USE=true TERM=vt100 "$@"
+	# The first element of $@ may be a shell function, as a result POSIX
+	# does not guarantee that "one-shot assignment" will not persist after
+	# the function call. Thus, we prevent these variables from escaping
+	# this function's context with this subshell.
+	(
+		GIT_PAGER_IN_USE=true &&
+		TERM=vt100 &&
+		export GIT_PAGER_IN_USE TERM &&
+		"$@"
+	)
 }
 
 test_expect_success 'setup (initial)' '
@@ -604,7 +613,7 @@
 	echo content >test &&
 	test_config interactive.diffFilter "sed 1d" &&
 	printf y >y &&
-	test_must_fail force_color git add -p <y
+	force_color test_must_fail git add -p <y
 '
 
 test_expect_success 'diff.algorithm is passed to `git diff-files`' '
diff --git a/t/t3906-stash-submodule.sh b/t/t3906-stash-submodule.sh
index b93d1d7..a52e53d 100755
--- a/t/t3906-stash-submodule.sh
+++ b/t/t3906-stash-submodule.sh
@@ -8,7 +8,12 @@
 git_stash () {
 	git status -su >expect &&
 	ls -1pR * >>expect &&
-	git read-tree -u -m "$1" &&
+	may_only_be_test_must_fail "$2" &&
+	$2 git read-tree -u -m "$1" &&
+	if test -n "$2"
+	then
+		return
+	fi &&
 	git stash &&
 	git status -su >actual &&
 	ls -1pR * >>actual &&
@@ -19,7 +24,7 @@
 KNOWN_FAILURE_STASH_DOES_IGNORE_SUBMODULE_CHANGES=1
 KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1
 KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1
-test_submodule_switch "git_stash"
+test_submodule_switch_func "git_stash"
 
 setup_basic () {
 	test_when_finished "rm -rf main sub" &&
diff --git a/t/t4010-diff-pathspec.sh b/t/t4010-diff-pathspec.sh
index e5ca359..65cc703 100755
--- a/t/t4010-diff-pathspec.sh
+++ b/t/t4010-diff-pathspec.sh
@@ -125,7 +125,9 @@
 test_expect_success 'diff-tree ignores trailing slash on submodule path' '
 	git diff --name-only HEAD^ HEAD submod >expect &&
 	git diff --name-only HEAD^ HEAD submod/ >actual &&
-	test_cmp expect actual
+	test_cmp expect actual &&
+	git diff --name-only HEAD^ HEAD -- submod/whatever >actual &&
+	test_must_be_empty actual
 '
 
 test_expect_success 'diff multiple wildcard pathspecs' '
diff --git a/t/t4137-apply-submodule.sh b/t/t4137-apply-submodule.sh
index a9bd40a..07d5262 100755
--- a/t/t4137-apply-submodule.sh
+++ b/t/t4137-apply-submodule.sh
@@ -6,15 +6,19 @@
 . "$TEST_DIRECTORY"/lib-submodule-update.sh
 
 apply_index () {
-	git diff --ignore-submodules=dirty "..$1" | git apply --index -
+	git diff --ignore-submodules=dirty "..$1" >diff &&
+	may_only_be_test_must_fail "$2" &&
+	$2 git apply --index diff
 }
 
-test_submodule_switch "apply_index"
+test_submodule_switch_func "apply_index"
 
 apply_3way () {
-	git diff --ignore-submodules=dirty "..$1" | git apply --3way -
+	git diff --ignore-submodules=dirty "..$1" >diff &&
+	may_only_be_test_must_fail "$2" &&
+	$2 git apply --3way diff
 }
 
-test_submodule_switch "apply_3way"
+test_submodule_switch_func "apply_3way"
 
 test_done
diff --git a/t/t4211-line-log.sh b/t/t4211-line-log.sh
index 1428eae..e186c83 100755
--- a/t/t4211-line-log.sh
+++ b/t/t4211-line-log.sh
@@ -240,10 +240,12 @@
 	EOF
 	git add file.c &&
 	test_tick &&
+	first_tick=$test_tick &&
 	git commit -m "Add func1() and func2() in file.c" &&
 
 	echo 1 >other-file &&
 	git add other-file &&
+	test_tick &&
 	git commit -m "Add other-file" &&
 
 	sed -e "s/F1/F1 + 1/" file.c >tmp &&
@@ -283,4 +285,10 @@
 	test_cmp expect actual
 '
 
+test_expect_success 'line-log with --before' '
+	echo $root_oid >expect &&
+	git log --format=%h --no-patch -L:func2:file.c --before=$first_tick >actual &&
+	test_cmp expect actual
+'
+
 test_done
diff --git a/t/t4216-log-bloom.sh b/t/t4216-log-bloom.sh
index c855bcd..c21cc16 100755
--- a/t/t4216-log-bloom.sh
+++ b/t/t4216-log-bloom.sh
@@ -60,7 +60,7 @@
 
 test_bloom_filters_used () {
 	log_args=$1
-	bloom_trace_prefix="statistics:{\"filter_not_present\":0,\"zero_length_filter\":0,\"maybe\""
+	bloom_trace_prefix="statistics:{\"filter_not_present\":0,\"maybe\""
 	setup "$log_args" &&
 	grep -q "$bloom_trace_prefix" "$TRASH_DIRECTORY/trace.perf" &&
 	test_cmp log_wo_bloom log_w_bloom &&
@@ -112,6 +112,10 @@
 	test_bloom_filters_not_used "-- file4 A/file1"
 '
 
+test_expect_success 'git log -- "." pathspec at root does not use Bloom filters' '
+	test_bloom_filters_not_used "-- ."
+'
+
 test_expect_success 'git log with wildcard that resolves to a single path uses Bloom filters' '
 	test_bloom_filters_used "-- *4" &&
 	test_bloom_filters_used "-- *renamed"
@@ -126,7 +130,7 @@
 	test_commit c14 A/anotherFile2 &&
 	test_commit c15 A/B/anotherFile2 &&
 	test_commit c16 A/B/C/anotherFile2 &&
-	GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=0 git commit-graph write --reachable --split &&
+	git commit-graph write --reachable --split --no-changed-paths &&
 	test_line_count = 2 .git/objects/info/commit-graphs/commit-graph-chain
 '
 
@@ -142,7 +146,7 @@
 
 test_bloom_filters_used_when_some_filters_are_missing () {
 	log_args=$1
-	bloom_trace_prefix="statistics:{\"filter_not_present\":3,\"zero_length_filter\":0,\"maybe\":8,\"definitely_not\":6"
+	bloom_trace_prefix="statistics:{\"filter_not_present\":3,\"maybe\":6,\"definitely_not\":8"
 	setup "$log_args" &&
 	grep -q "$bloom_trace_prefix" "$TRASH_DIRECTORY/trace.perf" &&
 	test_cmp log_wo_bloom log_w_bloom
@@ -152,4 +156,39 @@
 	test_bloom_filters_used_when_some_filters_are_missing "-- A/B"
 '
 
+test_expect_success 'persist filter settings' '
+	test_when_finished rm -rf .git/objects/info/commit-graph* &&
+	rm -rf .git/objects/info/commit-graph* &&
+	GIT_TRACE2_EVENT="$(pwd)/trace2.txt" \
+		GIT_TRACE2_EVENT_NESTING=5 \
+		GIT_TEST_BLOOM_SETTINGS_NUM_HASHES=9 \
+		GIT_TEST_BLOOM_SETTINGS_BITS_PER_ENTRY=15 \
+		git commit-graph write --reachable --changed-paths &&
+	grep "{\"hash_version\":1,\"num_hashes\":9,\"bits_per_entry\":15}" trace2.txt &&
+	GIT_TRACE2_EVENT="$(pwd)/trace2-auto.txt" \
+		GIT_TRACE2_EVENT_NESTING=5 \
+		git commit-graph write --reachable --changed-paths &&
+	grep "{\"hash_version\":1,\"num_hashes\":9,\"bits_per_entry\":15}" trace2-auto.txt
+'
+
+test_expect_success 'correctly report changes over limit' '
+	git init 513changes &&
+	(
+		cd 513changes &&
+		for i in $(test_seq 1 513)
+		do
+			echo $i >file$i.txt || return 1
+		done &&
+		git add . &&
+		git commit -m "files" &&
+		git commit-graph write --reachable --changed-paths &&
+		for i in $(test_seq 1 513)
+		do
+			git -c core.commitGraph=false log -- file$i.txt >expect &&
+			git log -- file$i.txt >actual &&
+			test_cmp expect actual || return 1
+		done
+	)
+'
+
 test_done
diff --git a/t/t4255-am-submodule.sh b/t/t4255-am-submodule.sh
index 0ba8194..a7ba08f 100755
--- a/t/t4255-am-submodule.sh
+++ b/t/t4255-am-submodule.sh
@@ -6,17 +6,21 @@
 . "$TEST_DIRECTORY"/lib-submodule-update.sh
 
 am () {
-	git format-patch --stdout --ignore-submodules=dirty "..$1" | git am -
+	git format-patch --stdout --ignore-submodules=dirty "..$1" >patch &&
+	may_only_be_test_must_fail "$2" &&
+	$2 git am patch
 }
 
-test_submodule_switch "am"
+test_submodule_switch_func "am"
 
 am_3way () {
-	git format-patch --stdout --ignore-submodules=dirty "..$1" | git am --3way -
+	git format-patch --stdout --ignore-submodules=dirty "..$1" >patch &&
+	may_only_be_test_must_fail "$2" &&
+	$2 git am --3way patch
 }
 
 KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
-test_submodule_switch "am_3way"
+test_submodule_switch_func "am_3way"
 
 test_expect_success 'setup diff.submodule' '
 	test_commit one &&
diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh
index 410a09b..746cdb6 100755
--- a/t/t5300-pack-object.sh
+++ b/t/t5300-pack-object.sh
@@ -12,7 +12,8 @@
 
 test_expect_success \
     'setup' \
-    'rm -f .git/index* &&
+    'test_oid_init &&
+     rm -f .git/index* &&
      perl -e "print \"a\" x 4096;" > a &&
      perl -e "print \"b\" x 4096;" > b &&
      perl -e "print \"c\" x 4096;" > c &&
@@ -412,18 +413,18 @@
 '
 
 test_expect_success 'index-pack --stdin complains of non-repo' '
-	nongit test_must_fail git index-pack --stdin <foo.pack &&
+	nongit test_must_fail git index-pack --object-format=$(test_oid algo) --stdin <foo.pack &&
 	test_path_is_missing non-repo/.git
 '
 
 test_expect_success 'index-pack <pack> works in non-repo' '
-	nongit git index-pack ../foo.pack &&
+	nongit git index-pack --object-format=$(test_oid algo) ../foo.pack &&
 	test_path_is_file foo.idx
 '
 
 test_expect_success 'index-pack --strict <pack> works in non-repo' '
 	rm -f foo.idx &&
-	nongit git index-pack --strict ../foo.pack &&
+	nongit git index-pack --strict --object-format=$(test_oid algo) ../foo.pack &&
 	test_path_is_file foo.idx
 '
 
diff --git a/t/t5302-pack-index.sh b/t/t5302-pack-index.sh
index ad07f2f..8981c9b 100755
--- a/t/t5302-pack-index.sh
+++ b/t/t5302-pack-index.sh
@@ -7,65 +7,65 @@
 . ./test-lib.sh
 
 test_expect_success 'setup' '
-     test_oid_init &&
-     rawsz=$(test_oid rawsz) &&
-     rm -rf .git &&
-     git init &&
-     git config pack.threads 1 &&
-     i=1 &&
-     while test $i -le 100
-     do
-         iii=$(printf '%03i' $i)
-	 test-tool genrandom "bar" 200 > wide_delta_$iii &&
-	 test-tool genrandom "baz $iii" 50 >> wide_delta_$iii &&
-	 test-tool genrandom "foo"$i 100 > deep_delta_$iii &&
-	 test-tool genrandom "foo"$(expr $i + 1) 100 >> deep_delta_$iii &&
-	 test-tool genrandom "foo"$(expr $i + 2) 100 >> deep_delta_$iii &&
-         echo $iii >file_$iii &&
-	 test-tool genrandom "$iii" 8192 >>file_$iii &&
-         git update-index --add file_$iii deep_delta_$iii wide_delta_$iii &&
-         i=$(expr $i + 1) || return 1
-     done &&
-     { echo 101 && test-tool genrandom 100 8192; } >file_101 &&
-     git update-index --add file_101 &&
-     tree=$(git write-tree) &&
-     commit=$(git commit-tree $tree </dev/null) && {
-	 echo $tree &&
-	 git ls-tree $tree | sed -e "s/.* \\([0-9a-f]*\\)	.*/\\1/"
-     } >obj-list &&
-     git update-ref HEAD $commit
+	test_oid_init &&
+	rawsz=$(test_oid rawsz) &&
+	rm -rf .git &&
+	git init &&
+	git config pack.threads 1 &&
+	i=1 &&
+	while test $i -le 100
+	do
+		iii=$(printf '%03i' $i)
+		test-tool genrandom "bar" 200 > wide_delta_$iii &&
+		test-tool genrandom "baz $iii" 50 >> wide_delta_$iii &&
+		test-tool genrandom "foo"$i 100 > deep_delta_$iii &&
+		test-tool genrandom "foo"$(expr $i + 1) 100 >> deep_delta_$iii &&
+		test-tool genrandom "foo"$(expr $i + 2) 100 >> deep_delta_$iii &&
+		echo $iii >file_$iii &&
+		test-tool genrandom "$iii" 8192 >>file_$iii &&
+		git update-index --add file_$iii deep_delta_$iii wide_delta_$iii &&
+		i=$(expr $i + 1) || return 1
+	done &&
+	{ echo 101 && test-tool genrandom 100 8192; } >file_101 &&
+	git update-index --add file_101 &&
+	tree=$(git write-tree) &&
+	commit=$(git commit-tree $tree </dev/null) && {
+		echo $tree &&
+		git ls-tree $tree | sed -e "s/.* \\([0-9a-f]*\\)	.*/\\1/"
+	} >obj-list &&
+	git update-ref HEAD $commit
 '
 
-test_expect_success \
-    'pack-objects with index version 1' \
-    'pack1=$(git pack-objects --index-version=1 test-1 <obj-list) &&
-     git verify-pack -v "test-1-${pack1}.pack"'
+test_expect_success 'pack-objects with index version 1' '
+	pack1=$(git pack-objects --index-version=1 test-1 <obj-list) &&
+	git verify-pack -v "test-1-${pack1}.pack"
+'
 
-test_expect_success \
-    'pack-objects with index version 2' \
-    'pack2=$(git pack-objects --index-version=2 test-2 <obj-list) &&
-     git verify-pack -v "test-2-${pack2}.pack"'
+test_expect_success 'pack-objects with index version 2' '
+	pack2=$(git pack-objects --index-version=2 test-2 <obj-list) &&
+	git verify-pack -v "test-2-${pack2}.pack"
+'
 
-test_expect_success \
-    'both packs should be identical' \
-    'cmp "test-1-${pack1}.pack" "test-2-${pack2}.pack"'
+test_expect_success 'both packs should be identical' '
+	cmp "test-1-${pack1}.pack" "test-2-${pack2}.pack"
+'
 
-test_expect_success \
-    'index v1 and index v2 should be different' \
-    '! cmp "test-1-${pack1}.idx" "test-2-${pack2}.idx"'
+test_expect_success 'index v1 and index v2 should be different' '
+	! cmp "test-1-${pack1}.idx" "test-2-${pack2}.idx"
+'
 
-test_expect_success \
-    'index-pack with index version 1' \
-    'git index-pack --index-version=1 -o 1.idx "test-1-${pack1}.pack"'
+test_expect_success 'index-pack with index version 1' '
+	git index-pack --index-version=1 -o 1.idx "test-1-${pack1}.pack"
+'
 
-test_expect_success \
-    'index-pack with index version 2' \
-    'git index-pack --index-version=2 -o 2.idx "test-1-${pack1}.pack"'
+test_expect_success 'index-pack with index version 2' '
+	git index-pack --index-version=2 -o 2.idx "test-1-${pack1}.pack"
+'
 
-test_expect_success \
-    'index-pack results should match pack-objects ones' \
-    'cmp "test-1-${pack1}.idx" "1.idx" &&
-     cmp "test-2-${pack2}.idx" "2.idx"'
+test_expect_success 'index-pack results should match pack-objects ones' '
+	cmp "test-1-${pack1}.idx" "1.idx" &&
+	cmp "test-2-${pack2}.idx" "2.idx"
+'
 
 test_expect_success 'index-pack --verify on index version 1' '
 	git index-pack --verify "test-1-${pack1}.pack"
@@ -75,13 +75,13 @@
 	git index-pack --verify "test-2-${pack2}.pack"
 '
 
-test_expect_success \
-    'pack-objects --index-version=2, is not accepted' \
-    'test_must_fail git pack-objects --index-version=2, test-3 <obj-list'
+test_expect_success 'pack-objects --index-version=2, is not accepted' '
+	test_must_fail git pack-objects --index-version=2, test-3 <obj-list
+'
 
-test_expect_success \
-    'index v2: force some 64-bit offsets with pack-objects' \
-    'pack3=$(git pack-objects --index-version=2,0x40000 test-3 <obj-list)'
+test_expect_success 'index v2: force some 64-bit offsets with pack-objects' '
+	pack3=$(git pack-objects --index-version=2,0x40000 test-3 <obj-list)
+'
 
 if msg=$(git verify-pack -v "test-3-${pack3}.pack" 2>&1) ||
 	! (echo "$msg" | grep "pack too large .* off_t")
@@ -91,21 +91,21 @@
 	say "# skipping tests concerning 64-bit offsets"
 fi
 
-test_expect_success OFF64_T \
-    'index v2: verify a pack with some 64-bit offsets' \
-    'git verify-pack -v "test-3-${pack3}.pack"'
+test_expect_success OFF64_T 'index v2: verify a pack with some 64-bit offsets' '
+	git verify-pack -v "test-3-${pack3}.pack"
+'
 
-test_expect_success OFF64_T \
-    '64-bit offsets: should be different from previous index v2 results' \
-    '! cmp "test-2-${pack2}.idx" "test-3-${pack3}.idx"'
+test_expect_success OFF64_T '64-bit offsets: should be different from previous index v2 results' '
+	! cmp "test-2-${pack2}.idx" "test-3-${pack3}.idx"
+'
 
-test_expect_success OFF64_T \
-    'index v2: force some 64-bit offsets with index-pack' \
-    'git index-pack --index-version=2,0x40000 -o 3.idx "test-1-${pack1}.pack"'
+test_expect_success OFF64_T 'index v2: force some 64-bit offsets with index-pack' '
+	git index-pack --index-version=2,0x40000 -o 3.idx "test-1-${pack1}.pack"
+'
 
-test_expect_success OFF64_T \
-    '64-bit offsets: index-pack result should match pack-objects one' \
-    'cmp "test-3-${pack3}.idx" "3.idx"'
+test_expect_success OFF64_T '64-bit offsets: index-pack result should match pack-objects one' '
+	cmp "test-3-${pack3}.idx" "3.idx"
+'
 
 test_expect_success OFF64_T 'index-pack --verify on 64-bit offset v2 (cheat)' '
 	# This cheats by knowing which lower offset should still be encoded
@@ -120,135 +120,143 @@
 # returns the object number for given object in given pack index
 index_obj_nr()
 {
-    idx_file=$1
-    object_sha1=$2
-    nr=0
-    git show-index < $idx_file |
-    while read offs sha1 extra
-    do
-      nr=$(($nr + 1))
-      test "$sha1" = "$object_sha1" || continue
-      echo "$(($nr - 1))"
-      break
-    done
+	idx_file=$1
+	object_sha1=$2
+	nr=0
+	git show-index < $idx_file |
+	while read offs sha1 extra
+	do
+	  nr=$(($nr + 1))
+	  test "$sha1" = "$object_sha1" || continue
+	  echo "$(($nr - 1))"
+	  break
+	done
 }
 
 # returns the pack offset for given object as found in given pack index
 index_obj_offset()
 {
-    idx_file=$1
-    object_sha1=$2
-    git show-index < $idx_file | grep $object_sha1 |
-    ( read offs extra && echo "$offs" )
+	idx_file=$1
+	object_sha1=$2
+	git show-index < $idx_file | grep $object_sha1 |
+	( read offs extra && echo "$offs" )
 }
 
-test_expect_success \
-    '[index v1] 1) stream pack to repository' \
-    'git index-pack --index-version=1 --stdin < "test-1-${pack1}.pack" &&
-     git prune-packed &&
-     git count-objects | ( read nr rest && test "$nr" -eq 1 ) &&
-     cmp "test-1-${pack1}.pack" ".git/objects/pack/pack-${pack1}.pack" &&
-     cmp "test-1-${pack1}.idx"  ".git/objects/pack/pack-${pack1}.idx"'
+test_expect_success '[index v1] 1) stream pack to repository' '
+	git index-pack --index-version=1 --stdin < "test-1-${pack1}.pack" &&
+	git prune-packed &&
+	git count-objects | ( read nr rest && test "$nr" -eq 1 ) &&
+	cmp "test-1-${pack1}.pack" ".git/objects/pack/pack-${pack1}.pack" &&
+	cmp "test-1-${pack1}.idx"	".git/objects/pack/pack-${pack1}.idx"
+'
 
 test_expect_success \
-    '[index v1] 2) create a stealth corruption in a delta base reference' \
-    '# This test assumes file_101 is a delta smaller than 16 bytes.
-     # It should be against file_100 but we substitute its base for file_099
-     sha1_101=$(git hash-object file_101) &&
-     sha1_099=$(git hash-object file_099) &&
-     offs_101=$(index_obj_offset 1.idx $sha1_101) &&
-     nr_099=$(index_obj_nr 1.idx $sha1_099) &&
-     chmod +w ".git/objects/pack/pack-${pack1}.pack" &&
-     recordsz=$((rawsz + 4)) &&
-     dd of=".git/objects/pack/pack-${pack1}.pack" seek=$(($offs_101 + 1)) \
-        if=".git/objects/pack/pack-${pack1}.idx" \
-        skip=$((4 + 256 * 4 + $nr_099 * recordsz)) \
-        bs=1 count=$rawsz conv=notrunc &&
-     git cat-file blob $sha1_101 > file_101_foo1'
+	'[index v1] 2) create a stealth corruption in a delta base reference' '
+	# This test assumes file_101 is a delta smaller than 16 bytes.
+	# It should be against file_100 but we substitute its base for file_099
+	sha1_101=$(git hash-object file_101) &&
+	sha1_099=$(git hash-object file_099) &&
+	offs_101=$(index_obj_offset 1.idx $sha1_101) &&
+	nr_099=$(index_obj_nr 1.idx $sha1_099) &&
+	chmod +w ".git/objects/pack/pack-${pack1}.pack" &&
+	recordsz=$((rawsz + 4)) &&
+	dd of=".git/objects/pack/pack-${pack1}.pack" seek=$(($offs_101 + 1)) \
+	       if=".git/objects/pack/pack-${pack1}.idx" \
+	       skip=$((4 + 256 * 4 + $nr_099 * recordsz)) \
+	       bs=1 count=$rawsz conv=notrunc &&
+	git cat-file blob $sha1_101 > file_101_foo1
+'
 
 test_expect_success \
-    '[index v1] 3) corrupted delta happily returned wrong data' \
-    'test -f file_101_foo1 && ! cmp file_101 file_101_foo1'
+	'[index v1] 3) corrupted delta happily returned wrong data' '
+	test -f file_101_foo1 && ! cmp file_101 file_101_foo1
+'
 
 test_expect_success \
-    '[index v1] 4) confirm that the pack is actually corrupted' \
-    'test_must_fail git fsck --full $commit'
+	'[index v1] 4) confirm that the pack is actually corrupted' '
+	test_must_fail git fsck --full $commit
+'
 
 test_expect_success \
-    '[index v1] 5) pack-objects happily reuses corrupted data' \
-    'pack4=$(git pack-objects test-4 <obj-list) &&
-     test -f "test-4-${pack4}.pack"'
+	'[index v1] 5) pack-objects happily reuses corrupted data' '
+	pack4=$(git pack-objects test-4 <obj-list) &&
+	test -f "test-4-${pack4}.pack"
+'
+
+test_expect_success '[index v1] 6) newly created pack is BAD !' '
+	test_must_fail git verify-pack -v "test-4-${pack4}.pack"
+'
+
+test_expect_success '[index v2] 1) stream pack to repository' '
+	rm -f .git/objects/pack/* &&
+	git index-pack --index-version=2 --stdin < "test-1-${pack1}.pack" &&
+	git prune-packed &&
+	git count-objects | ( read nr rest && test "$nr" -eq 1 ) &&
+	cmp "test-1-${pack1}.pack" ".git/objects/pack/pack-${pack1}.pack" &&
+	cmp "test-2-${pack1}.idx"	".git/objects/pack/pack-${pack1}.idx"
+'
 
 test_expect_success \
-    '[index v1] 6) newly created pack is BAD !' \
-    'test_must_fail git verify-pack -v "test-4-${pack4}.pack"'
+	'[index v2] 2) create a stealth corruption in a delta base reference' '
+	# This test assumes file_101 is a delta smaller than 16 bytes.
+	# It should be against file_100 but we substitute its base for file_099
+	sha1_101=$(git hash-object file_101) &&
+	sha1_099=$(git hash-object file_099) &&
+	offs_101=$(index_obj_offset 1.idx $sha1_101) &&
+	nr_099=$(index_obj_nr 1.idx $sha1_099) &&
+	chmod +w ".git/objects/pack/pack-${pack1}.pack" &&
+	dd of=".git/objects/pack/pack-${pack1}.pack" seek=$(($offs_101 + 1)) \
+		if=".git/objects/pack/pack-${pack1}.idx" \
+		skip=$((8 + 256 * 4 + $nr_099 * rawsz)) \
+		bs=1 count=$rawsz conv=notrunc &&
+	git cat-file blob $sha1_101 > file_101_foo2
+'
 
 test_expect_success \
-    '[index v2] 1) stream pack to repository' \
-    'rm -f .git/objects/pack/* &&
-     git index-pack --index-version=2 --stdin < "test-1-${pack1}.pack" &&
-     git prune-packed &&
-     git count-objects | ( read nr rest && test "$nr" -eq 1 ) &&
-     cmp "test-1-${pack1}.pack" ".git/objects/pack/pack-${pack1}.pack" &&
-     cmp "test-2-${pack1}.idx"  ".git/objects/pack/pack-${pack1}.idx"'
+	'[index v2] 3) corrupted delta happily returned wrong data' '
+	test -f file_101_foo2 && ! cmp file_101 file_101_foo2
+'
 
 test_expect_success \
-    '[index v2] 2) create a stealth corruption in a delta base reference' \
-    '# This test assumes file_101 is a delta smaller than 16 bytes.
-     # It should be against file_100 but we substitute its base for file_099
-     sha1_101=$(git hash-object file_101) &&
-     sha1_099=$(git hash-object file_099) &&
-     offs_101=$(index_obj_offset 1.idx $sha1_101) &&
-     nr_099=$(index_obj_nr 1.idx $sha1_099) &&
-     chmod +w ".git/objects/pack/pack-${pack1}.pack" &&
-     dd of=".git/objects/pack/pack-${pack1}.pack" seek=$(($offs_101 + 1)) \
-        if=".git/objects/pack/pack-${pack1}.idx" \
-        skip=$((8 + 256 * 4 + $nr_099 * rawsz)) \
-        bs=1 count=$rawsz conv=notrunc &&
-     git cat-file blob $sha1_101 > file_101_foo2'
+	'[index v2] 4) confirm that the pack is actually corrupted' '
+	test_must_fail git fsck --full $commit
+'
 
 test_expect_success \
-    '[index v2] 3) corrupted delta happily returned wrong data' \
-    'test -f file_101_foo2 && ! cmp file_101 file_101_foo2'
+	'[index v2] 5) pack-objects refuses to reuse corrupted data' '
+	test_must_fail git pack-objects test-5 <obj-list &&
+	test_must_fail git pack-objects --no-reuse-object test-6 <obj-list
+'
 
 test_expect_success \
-    '[index v2] 4) confirm that the pack is actually corrupted' \
-    'test_must_fail git fsck --full $commit'
-
-test_expect_success \
-    '[index v2] 5) pack-objects refuses to reuse corrupted data' \
-    'test_must_fail git pack-objects test-5 <obj-list &&
-     test_must_fail git pack-objects --no-reuse-object test-6 <obj-list'
-
-test_expect_success \
-    '[index v2] 6) verify-pack detects CRC mismatch' \
-    'rm -f .git/objects/pack/* &&
-     git index-pack --index-version=2 --stdin < "test-1-${pack1}.pack" &&
-     git verify-pack ".git/objects/pack/pack-${pack1}.pack" &&
-     obj=$(git hash-object file_001) &&
-     nr=$(index_obj_nr ".git/objects/pack/pack-${pack1}.idx" $obj) &&
-     chmod +w ".git/objects/pack/pack-${pack1}.idx" &&
-     printf xxxx | dd of=".git/objects/pack/pack-${pack1}.idx" conv=notrunc \
-        bs=1 count=4 seek=$((8 + 256 * 4 + $(wc -l <obj-list) * rawsz + $nr * 4)) &&
-     ( while read obj
-       do git cat-file -p $obj >/dev/null || exit 1
-       done <obj-list ) &&
-     test_must_fail git verify-pack ".git/objects/pack/pack-${pack1}.pack"
+	'[index v2] 6) verify-pack detects CRC mismatch' '
+	rm -f .git/objects/pack/* &&
+	git index-pack --index-version=2 --stdin < "test-1-${pack1}.pack" &&
+	git verify-pack ".git/objects/pack/pack-${pack1}.pack" &&
+	obj=$(git hash-object file_001) &&
+	nr=$(index_obj_nr ".git/objects/pack/pack-${pack1}.idx" $obj) &&
+	chmod +w ".git/objects/pack/pack-${pack1}.idx" &&
+	printf xxxx | dd of=".git/objects/pack/pack-${pack1}.idx" conv=notrunc \
+		bs=1 count=4 seek=$((8 + 256 * 4 + $(wc -l <obj-list) * rawsz + $nr * 4)) &&
+	 ( while read obj
+	   do git cat-file -p $obj >/dev/null || exit 1
+	   done <obj-list ) &&
+	test_must_fail git verify-pack ".git/objects/pack/pack-${pack1}.pack"
 '
 
 test_expect_success 'running index-pack in the object store' '
-    rm -f .git/objects/pack/* &&
-    cp test-1-${pack1}.pack .git/objects/pack/pack-${pack1}.pack &&
-    (
-	cd .git/objects/pack &&
-	git index-pack pack-${pack1}.pack
-    ) &&
-    test -f .git/objects/pack/pack-${pack1}.idx
+	rm -f .git/objects/pack/* &&
+	cp test-1-${pack1}.pack .git/objects/pack/pack-${pack1}.pack &&
+	(
+		cd .git/objects/pack &&
+		git index-pack pack-${pack1}.pack
+	) &&
+	test -f .git/objects/pack/pack-${pack1}.idx
 '
 
 test_expect_success 'index-pack --strict warns upon missing tagger in tag' '
-    sha=$(git rev-parse HEAD) &&
-    cat >wrong-tag <<EOF &&
+	sha=$(git rev-parse HEAD) &&
+	cat >wrong-tag <<EOF &&
 object $sha
 type commit
 tag guten tag
@@ -256,18 +264,18 @@
 This is an invalid tag.
 EOF
 
-    tag=$(git hash-object -t tag -w --stdin <wrong-tag) &&
-    pack1=$(echo $tag $sha | git pack-objects tag-test) &&
-    echo remove tag object &&
-    thirtyeight=${tag#??} &&
-    rm -f .git/objects/${tag%$thirtyeight}/$thirtyeight &&
-    git index-pack --strict tag-test-${pack1}.pack 2>err &&
-    grep "^warning:.* expected .tagger. line" err
+	tag=$(git hash-object -t tag -w --stdin <wrong-tag) &&
+	pack1=$(echo $tag $sha | git pack-objects tag-test) &&
+	echo remove tag object &&
+	thirtyeight=${tag#??} &&
+	rm -f .git/objects/${tag%$thirtyeight}/$thirtyeight &&
+	git index-pack --strict tag-test-${pack1}.pack 2>err &&
+	grep "^warning:.* expected .tagger. line" err
 '
 
 test_expect_success 'index-pack --fsck-objects also warns upon missing tagger in tag' '
-    git index-pack --fsck-objects tag-test-${pack1}.pack 2>err &&
-    grep "^warning:.* expected .tagger. line" err
+	git index-pack --fsck-objects tag-test-${pack1}.pack 2>err &&
+	grep "^warning:.* expected .tagger. line" err
 '
 
 test_done
diff --git a/t/t5318-commit-graph.sh b/t/t5318-commit-graph.sh
index 26f332d..2804b0d 100755
--- a/t/t5318-commit-graph.sh
+++ b/t/t5318-commit-graph.sh
@@ -476,7 +476,7 @@
 		cp $objdir/info/commit-graph commit-graph-pre-write-test
 	fi &&
 	git status --short &&
-	GIT_TEST_COMMIT_GRAPH_DIE_ON_LOAD=true git commit-graph write &&
+	GIT_TEST_COMMIT_GRAPH_DIE_ON_PARSE=true git commit-graph write &&
 	chmod u+w $objdir/info/commit-graph &&
 	git commit-graph verify
 }
@@ -529,7 +529,7 @@
 '
 
 test_expect_success 'detect low chunk count' '
-	corrupt_graph_and_verify $GRAPH_BYTE_CHUNK_COUNT "\02" \
+	corrupt_graph_and_verify $GRAPH_BYTE_CHUNK_COUNT "\01" \
 		"missing the .* chunk"
 '
 
@@ -615,7 +615,8 @@
 
 test_expect_success 'detect incorrect chunk count' '
 	corrupt_graph_and_verify $GRAPH_BYTE_CHUNK_COUNT "\377" \
-		"chunk lookup table entry missing" $GRAPH_CHUNK_LOOKUP_OFFSET
+		"commit-graph file is too small to hold [0-9]* chunks" \
+		$GRAPH_CHUNK_LOOKUP_OFFSET
 '
 
 test_expect_success 'git fsck (checks commit-graph)' '
diff --git a/t/t5324-split-commit-graph.sh b/t/t5324-split-commit-graph.sh
index 269d096..9b850ea 100755
--- a/t/t5324-split-commit-graph.sh
+++ b/t/t5324-split-commit-graph.sh
@@ -399,7 +399,7 @@
 		for i in $(test_seq 64)
 		do
 			test_commit $i &&
-			test_might_fail run_with_limited_open_files git commit-graph write \
+			run_with_limited_open_files test_might_fail git commit-graph write \
 				--split=no-merge --reachable || return 1
 		done
 	)
diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh
index 0f5ff25..3557374 100755
--- a/t/t5500-fetch-pack.sh
+++ b/t/t5500-fetch-pack.sh
@@ -871,9 +871,10 @@
 
 	GIT_PROTOCOL=version=2 git upload-pack . <<-EOF >/dev/null
 	0012command=fetch
+	$(echo "object-format=$(test_oid algo)" | packetize)
 	00010013deepen-since 1
-	0032want $(git rev-parse other)
-	0032have $(git rev-parse master)
+	$(echo "want $(git rev-parse other)" | packetize)
+	$(echo "have $(git rev-parse master)" | packetize)
 	0000
 	EOF
 	)
diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh
index dda81b7..8d62edd 100755
--- a/t/t5505-remote.sh
+++ b/t/t5505-remote.sh
@@ -988,7 +988,7 @@
 	+refs/heads/maint:refs/remotes/scratch/maint
 	+refs/heads/master:refs/remotes/scratch/master
 	+refs/heads/next:refs/remotes/scratch/next
-	+refs/heads/pu:refs/remotes/scratch/pu
+	+refs/heads/seen:refs/remotes/scratch/seen
 	+refs/heads/t/topic:refs/remotes/scratch/t/topic
 	EOF
 	sort <<-\EOF >expect.setup-ffonly &&
@@ -998,7 +998,7 @@
 	sort <<-\EOF >expect.respect-ffonly &&
 	refs/heads/master:refs/remotes/scratch/master
 	+refs/heads/next:refs/remotes/scratch/next
-	+refs/heads/pu:refs/remotes/scratch/pu
+	+refs/heads/seen:refs/remotes/scratch/seen
 	EOF
 
 	git clone .git/ setbranches &&
@@ -1016,7 +1016,7 @@
 		git config --get-all remote.scratch.fetch >config-result &&
 		sort <config-result >../actual.replace &&
 
-		git remote set-branches --add scratch pu t/topic &&
+		git remote set-branches --add scratch seen t/topic &&
 		git config --get-all remote.scratch.fetch >config-result &&
 		sort <config-result >../actual.add-two &&
 
@@ -1028,7 +1028,7 @@
 		git config --get-all remote.scratch.fetch >config-result &&
 		sort <config-result >../actual.setup-ffonly &&
 
-		git remote set-branches --add scratch pu &&
+		git remote set-branches --add scratch seen &&
 		git config --get-all remote.scratch.fetch >config-result &&
 		sort <config-result >../actual.respect-ffonly
 	) &&
diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh
index a66dbe0..7456c56 100755
--- a/t/t5510-fetch.sh
+++ b/t/t5510-fetch.sh
@@ -797,7 +797,7 @@
 	"--prune origin refs/tags/*:refs/tags/* +refs/heads/*:refs/remotes/origin/*"
 
 # --prune-tags on its own does nothing, needs --prune as well, same
-# for for fetch.pruneTags without fetch.prune
+# for fetch.pruneTags without fetch.prune
 test_configured_prune unset unset unset unset kept kept     "--prune-tags"
 test_configured_prune unset unset true unset  kept kept     ""
 test_configured_prune unset unset unset true  kept kept     ""
diff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh
index 9c6218f..36ad20a 100755
--- a/t/t5516-fetch-push.sh
+++ b/t/t5516-fetch-push.sh
@@ -747,42 +747,42 @@
 '
 
 test_expect_success 'mixed ref updates, deletes, invalid deletes trigger hooks with correct input' '
-	mk_test_with_hooks testrepo heads/master heads/next heads/pu &&
+	mk_test_with_hooks testrepo heads/master heads/next heads/seen &&
 	orgmaster=$(cd testrepo && git show-ref -s --verify refs/heads/master) &&
 	newmaster=$(git show-ref -s --verify refs/heads/master) &&
 	orgnext=$(cd testrepo && git show-ref -s --verify refs/heads/next) &&
 	newnext=$ZERO_OID &&
-	orgpu=$(cd testrepo && git show-ref -s --verify refs/heads/pu) &&
-	newpu=$(git show-ref -s --verify refs/heads/master) &&
+	orgseen=$(cd testrepo && git show-ref -s --verify refs/heads/seen) &&
+	newseen=$(git show-ref -s --verify refs/heads/master) &&
 	git push testrepo refs/heads/master:refs/heads/master \
-	    refs/heads/master:refs/heads/pu :refs/heads/next \
+	    refs/heads/master:refs/heads/seen :refs/heads/next \
 	    :refs/heads/nonexistent &&
 	(
 		cd testrepo/.git &&
 		cat >pre-receive.expect <<-EOF &&
 		$orgmaster $newmaster refs/heads/master
 		$orgnext $newnext refs/heads/next
-		$orgpu $newpu refs/heads/pu
+		$orgseen $newseen refs/heads/seen
 		$ZERO_OID $ZERO_OID refs/heads/nonexistent
 		EOF
 
 		cat >update.expect <<-EOF &&
 		refs/heads/master $orgmaster $newmaster
 		refs/heads/next $orgnext $newnext
-		refs/heads/pu $orgpu $newpu
+		refs/heads/seen $orgseen $newseen
 		refs/heads/nonexistent $ZERO_OID $ZERO_OID
 		EOF
 
 		cat >post-receive.expect <<-EOF &&
 		$orgmaster $newmaster refs/heads/master
 		$orgnext $newnext refs/heads/next
-		$orgpu $newpu refs/heads/pu
+		$orgseen $newseen refs/heads/seen
 		EOF
 
 		cat >post-update.expect <<-EOF &&
 		refs/heads/master
 		refs/heads/next
-		refs/heads/pu
+		refs/heads/seen
 		EOF
 
 		test_cmp pre-receive.expect pre-receive.actual &&
diff --git a/t/t5528-push-default.sh b/t/t5528-push-default.sh
index 4d1e0c3..f0a287d 100755
--- a/t/t5528-push-default.sh
+++ b/t/t5528-push-default.sh
@@ -98,6 +98,12 @@
 	test_push_failure upstream
 '
 
+test_expect_success '"matching" fails if none match' '
+	git init --bare empty &&
+	test_must_fail git push empty : 2>actual &&
+	test_i18ngrep "Perhaps you should specify a branch" actual
+'
+
 test_expect_success 'push ambiguously named branch with upstream, matching and simple' '
 	git checkout -b ambiguous &&
 	test_config branch.ambiguous.remote parent1 &&
diff --git a/t/t5537-fetch-shallow.sh b/t/t5537-fetch-shallow.sh
index d427a2d..a55202d 100755
--- a/t/t5537-fetch-shallow.sh
+++ b/t/t5537-fetch-shallow.sh
@@ -81,6 +81,20 @@
 	)
 '
 
+test_expect_success 'fetch --unshallow from a full clone' '
+	git clone --no-local --depth=2 .git shallow3 &&
+	(
+	cd shallow3 &&
+	git log --format=%s >actual &&
+	test_write_lines 4 3 >expect &&
+	test_cmp expect actual &&
+	git -c fetch.writeCommitGraph fetch --unshallow &&
+	git log origin/master --format=%s >actual &&
+	test_write_lines 4 3 2 1 >expect &&
+	test_cmp expect actual
+	)
+'
+
 test_expect_success 'fetch something upstream has but hidden by clients shallow boundaries' '
 	# the blob "1" is available in .git but hidden by the
 	# shallow2/.git/shallow and it should be resent
diff --git a/t/t5539-fetch-http-shallow.sh b/t/t5539-fetch-http-shallow.sh
index c0d02de..82aa99a 100755
--- a/t/t5539-fetch-http-shallow.sh
+++ b/t/t5539-fetch-http-shallow.sh
@@ -9,10 +9,12 @@
 commit() {
 	echo "$1" >tracked &&
 	git add tracked &&
+	test_tick &&
 	git commit -m "$1"
 }
 
 test_expect_success 'setup shallow clone' '
+	test_tick=1500000000 &&
 	commit 1 &&
 	commit 2 &&
 	commit 3 &&
@@ -48,7 +50,6 @@
 test_expect_success 'no shallow lines after receiving ACK ready' '
 	(
 		cd shallow &&
-		test_tick &&
 		for i in $(test_seq 15)
 		do
 			git checkout --orphan unrelated$i &&
@@ -66,6 +67,7 @@
 	(
 		cd clone &&
 		git checkout --orphan newnew &&
+		test_tick=1400000000 &&
 		test_commit new-too &&
 		# NEEDSWORK: If the overspecification of the expected result is reduced, we
 		# might be able to run this test in all protocol versions.
diff --git a/t/t5540-http-push-webdav.sh b/t/t5540-http-push-webdav.sh
index d476c33..450321f 100755
--- a/t/t5540-http-push-webdav.sh
+++ b/t/t5540-http-push-webdav.sh
@@ -126,6 +126,22 @@
 	test_must_fail git show-ref --verify refs/remotes/origin/dev
 '
 
+test_expect_success 'non-force push fails if not up to date' '
+	git init --bare "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo_conflict.git &&
+	git -C "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo_conflict.git update-server-info &&
+	git clone $HTTPD_URL/dumb/test_repo_conflict.git "$ROOT_PATH"/c1 &&
+	git clone $HTTPD_URL/dumb/test_repo_conflict.git "$ROOT_PATH"/c2 &&
+	test_commit -C "$ROOT_PATH/c1" path1 &&
+	git -C "$ROOT_PATH/c1" push origin HEAD &&
+	git -C "$ROOT_PATH/c2" pull &&
+	test_commit -C "$ROOT_PATH/c1" path2 &&
+	git -C "$ROOT_PATH/c1" push origin HEAD &&
+	test_commit -C "$ROOT_PATH/c2" path3 &&
+	git -C "$ROOT_PATH/c1" log --graph --all &&
+	git -C "$ROOT_PATH/c2" log --graph --all &&
+	test_must_fail git -C "$ROOT_PATH/c2" push origin HEAD
+'
+
 test_expect_success 'MKCOL sends directory names with trailing slashes' '
 
 	! grep "\"MKCOL.*[^/] HTTP/[^ ]*\"" < "$HTTPD_ROOT_PATH"/access.log
diff --git a/t/t5541-http-push-smart.sh b/t/t5541-http-push-smart.sh
index 463d0f1..187454f 100755
--- a/t/t5541-http-push-smart.sh
+++ b/t/t5541-http-push-smart.sh
@@ -479,6 +479,21 @@
 	! grep "$HTTPD_URL_USER_PASS" reflog
 '
 
+test_expect_success 'Non-ASCII branch name can be used with --force-with-lease' '
+	cd "$ROOT_PATH" &&
+	git clone "$HTTPD_URL_USER_PASS/smart/test_repo.git" non-ascii &&
+	cd non-ascii &&
+	git checkout -b rama-de-árbol &&
+	test_commit F &&
+	git push --force-with-lease origin rama-de-árbol &&
+	git ls-remote origin refs/heads/rama-de-árbol >actual &&
+	git ls-remote . refs/heads/rama-de-árbol >expect &&
+	test_cmp expect actual &&
+	git push --delete --force-with-lease origin rama-de-árbol &&
+	git ls-remote origin refs/heads/rama-de-árbol >actual &&
+	test_must_be_empty actual
+'
+
 test_expect_success 'colorize errors/hints' '
 	cd "$ROOT_PATH"/test_repo_clone &&
 	test_must_fail git -c color.transport=always -c color.advice=always \
diff --git a/t/t5550-http-fetch-dumb.sh b/t/t5550-http-fetch-dumb.sh
index ca2e8af..483578b 100755
--- a/t/t5550-http-fetch-dumb.sh
+++ b/t/t5550-http-fetch-dumb.sh
@@ -50,6 +50,24 @@
 	       "$HTTPD_DOCUMENT_ROOT_PATH/auth/dumb/repo.git"
 '
 
+test_expect_success 'create empty remote repository' '
+	git init --bare "$HTTPD_DOCUMENT_ROOT_PATH/empty.git" &&
+	(cd "$HTTPD_DOCUMENT_ROOT_PATH/empty.git" &&
+	 mkdir -p hooks &&
+	 write_script "hooks/post-update" <<-\EOF &&
+	 exec git update-server-info
+	EOF
+	 hooks/post-update
+	)
+'
+
+test_expect_success 'empty dumb HTTP repository has default hash algorithm' '
+	test_when_finished "rm -fr clone-empty" &&
+	git clone $HTTPD_URL/dumb/empty.git clone-empty &&
+	git -C clone-empty rev-parse --show-object-format >empty-format &&
+	test "$(cat empty-format)" = "$(test_oid algo)"
+'
+
 setup_askpass_helper
 
 test_expect_success 'cloning password-protected repository can fail' '
diff --git a/t/t5562-http-backend-content-length.sh b/t/t5562-http-backend-content-length.sh
index 3f4ac71..c6ec625 100755
--- a/t/t5562-http-backend-content-length.sh
+++ b/t/t5562-http-backend-content-length.sh
@@ -46,6 +46,7 @@
 }
 
 test_expect_success 'setup' '
+	test_oid_init &&
 	HTTP_CONTENT_ENCODING="identity" &&
 	export HTTP_CONTENT_ENCODING &&
 	git config http.receivepack true &&
@@ -62,8 +63,8 @@
 	test_copy_bytes 10 <fetch_body >fetch_body.trunc &&
 	hash_next=$(git commit-tree -p HEAD -m next HEAD^{tree}) &&
 	{
-		printf "%s %s refs/heads/newbranch\\0report-status\\n" \
-			"$ZERO_OID" "$hash_next" | packetize &&
+		printf "%s %s refs/heads/newbranch\\0report-status object-format=%s\\n" \
+			"$ZERO_OID" "$hash_next" "$(test_oid algo)" | packetize &&
 		printf 0000 &&
 		echo "$hash_next" | git pack-objects --stdout
 	} >push_body &&
diff --git a/t/t5572-pull-submodule.sh b/t/t5572-pull-submodule.sh
index f916729..1d75e3b 100755
--- a/t/t5572-pull-submodule.sh
+++ b/t/t5572-pull-submodule.sh
@@ -13,34 +13,38 @@
 
 git_pull () {
 	reset_branch_to_HEAD "$1" &&
-	git pull
+	may_only_be_test_must_fail "$2" &&
+	$2 git pull
 }
 
 # pulls without conflicts
-test_submodule_switch "git_pull"
+test_submodule_switch_func "git_pull"
 
 git_pull_ff () {
 	reset_branch_to_HEAD "$1" &&
-	git pull --ff
+	may_only_be_test_must_fail "$2" &&
+	$2 git pull --ff
 }
 
-test_submodule_switch "git_pull_ff"
+test_submodule_switch_func "git_pull_ff"
 
 git_pull_ff_only () {
 	reset_branch_to_HEAD "$1" &&
-	git pull --ff-only
+	may_only_be_test_must_fail "$2" &&
+	$2 git pull --ff-only
 }
 
-test_submodule_switch "git_pull_ff_only"
+test_submodule_switch_func "git_pull_ff_only"
 
 git_pull_noff () {
 	reset_branch_to_HEAD "$1" &&
-	git pull --no-ff
+	may_only_be_test_must_fail "$2" &&
+	$2 git pull --no-ff
 }
 
 KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1
 KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
-test_submodule_switch "git_pull_noff"
+test_submodule_switch_func "git_pull_noff"
 
 test_expect_success 'pull --recurse-submodule setup' '
 	test_create_repo child &&
diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
index 84ea2a3..eb9a093 100755
--- a/t/t5601-clone.sh
+++ b/t/t5601-clone.sh
@@ -271,7 +271,9 @@
 
 test_expect_success 'clone separate gitdir where target already exists' '
 	rm -rf dst &&
-	test_must_fail git clone --separate-git-dir realgitdir src dst
+	echo foo=bar >>realgitdir/config &&
+	test_must_fail git clone --separate-git-dir realgitdir src dst &&
+	grep foo=bar realgitdir/config
 '
 
 test_expect_success 'clone --reference from original' '
diff --git a/t/t5606-clone-options.sh b/t/t5606-clone-options.sh
index 9e24ec8..e69427f 100755
--- a/t/t5606-clone-options.sh
+++ b/t/t5606-clone-options.sh
@@ -35,4 +35,28 @@
 
 '
 
+test_expect_success 'chooses correct default initial branch name' '
+	git init --bare empty &&
+	git -c init.defaultBranch=up clone empty whats-up &&
+	test refs/heads/up = $(git -C whats-up symbolic-ref HEAD) &&
+	test refs/heads/up = $(git -C whats-up config branch.up.merge)
+'
+
+test_expect_success 'guesses initial branch name correctly' '
+	git init --initial-branch=guess initial-branch &&
+	test_commit -C initial-branch no-spoilers &&
+	git -C initial-branch branch abc guess &&
+	git clone initial-branch is-it &&
+	test refs/heads/guess = $(git -C is-it symbolic-ref HEAD) &&
+
+	git -c init.defaultBranch=none init --bare no-head &&
+	git -C initial-branch push ../no-head guess abc &&
+	git clone no-head is-it2 &&
+	test_must_fail git -C is-it2 symbolic-ref refs/remotes/origin/HEAD &&
+	git -C no-head update-ref --no-deref HEAD refs/heads/guess &&
+	git -c init.defaultBranch=guess clone no-head is-it3 &&
+	test refs/remotes/origin/guess = \
+		$(git -C is-it3 symbolic-ref refs/remotes/origin/HEAD)
+'
+
 test_done
diff --git a/t/t5616-partial-clone.sh b/t/t5616-partial-clone.sh
index 8a27452..37de0af 100755
--- a/t/t5616-partial-clone.sh
+++ b/t/t5616-partial-clone.sh
@@ -422,6 +422,44 @@
 	test_must_fail git -C single rev-parse --verify refs/tags/C
 '
 
+test_expect_success 'fetch from a partial clone, protocol v0' '
+	rm -rf server client trace &&
+
+	# Pretend that the server is a partial clone
+	git init server &&
+	git -C server remote add a_remote "file://$(pwd)/" &&
+	test_config -C server core.repositoryformatversion 1 &&
+	test_config -C server extensions.partialclone a_remote &&
+	test_config -C server protocol.version 0 &&
+	test_commit -C server foo &&
+
+	# Fetch from the server
+	git init client &&
+	test_config -C client protocol.version 0 &&
+	test_commit -C client bar &&
+	GIT_TRACE_PACKET="$(pwd)/trace" git -C client fetch "file://$(pwd)/server" &&
+	! grep "version 2" trace
+'
+
+test_expect_success 'fetch from a partial clone, protocol v2' '
+	rm -rf server client trace &&
+
+	# Pretend that the server is a partial clone
+	git init server &&
+	git -C server remote add a_remote "file://$(pwd)/" &&
+	test_config -C server core.repositoryformatversion 1 &&
+	test_config -C server extensions.partialclone a_remote &&
+	test_config -C server protocol.version 2 &&
+	test_commit -C server foo &&
+
+	# Fetch from the server
+	git init client &&
+	test_config -C client protocol.version 2 &&
+	test_commit -C client bar &&
+	GIT_TRACE_PACKET="$(pwd)/trace" git -C client fetch "file://$(pwd)/server" &&
+	grep "version 2" trace
+'
+
 . "$TEST_DIRECTORY"/lib-httpd.sh
 start_httpd
 
diff --git a/t/t5701-git-serve.sh b/t/t5701-git-serve.sh
index ffb9613..a1f5fdc 100755
--- a/t/t5701-git-serve.sh
+++ b/t/t5701-git-serve.sh
@@ -5,12 +5,17 @@
 . ./test-lib.sh
 
 test_expect_success 'test capability advertisement' '
+	test_oid_cache <<-EOF &&
+	wrong_algo sha1:sha256
+	wrong_algo sha256:sha1
+	EOF
 	cat >expect <<-EOF &&
 	version 2
 	agent=git/$(git version | cut -d" " -f3)
 	ls-refs
 	fetch=shallow
 	server-option
+	object-format=$(test_oid algo)
 	0000
 	EOF
 
@@ -45,6 +50,7 @@
 test_expect_success 'request with no command' '
 	test-tool pkt-line pack >in <<-EOF &&
 	agent=git/test
+	object-format=$(test_oid algo)
 	0000
 	EOF
 	test_must_fail test-tool serve-v2 --stateless-rpc 2>err <in &&
@@ -54,6 +60,7 @@
 test_expect_success 'request invalid command' '
 	test-tool pkt-line pack >in <<-EOF &&
 	command=foo
+	object-format=$(test_oid algo)
 	agent=git/test
 	0000
 	EOF
@@ -61,6 +68,17 @@
 	test_i18ngrep "invalid command" err
 '
 
+test_expect_success 'wrong object-format' '
+	test-tool pkt-line pack >in <<-EOF &&
+	command=fetch
+	agent=git/test
+	object-format=$(test_oid wrong_algo)
+	0000
+	EOF
+	test_must_fail test-tool serve-v2 --stateless-rpc 2>err <in &&
+	test_i18ngrep "mismatched object format" err
+'
+
 # Test the basics of ls-refs
 #
 test_expect_success 'setup some refs and tags' '
@@ -74,6 +92,7 @@
 test_expect_success 'basics of ls-refs' '
 	test-tool pkt-line pack >in <<-EOF &&
 	command=ls-refs
+	object-format=$(test_oid algo)
 	0000
 	EOF
 
@@ -96,6 +115,7 @@
 test_expect_success 'basic ref-prefixes' '
 	test-tool pkt-line pack >in <<-EOF &&
 	command=ls-refs
+	object-format=$(test_oid algo)
 	0001
 	ref-prefix refs/heads/master
 	ref-prefix refs/tags/one
@@ -116,6 +136,7 @@
 test_expect_success 'refs/heads prefix' '
 	test-tool pkt-line pack >in <<-EOF &&
 	command=ls-refs
+	object-format=$(test_oid algo)
 	0001
 	ref-prefix refs/heads/
 	0000
@@ -136,6 +157,7 @@
 test_expect_success 'peel parameter' '
 	test-tool pkt-line pack >in <<-EOF &&
 	command=ls-refs
+	object-format=$(test_oid algo)
 	0001
 	peel
 	ref-prefix refs/tags/
@@ -157,6 +179,7 @@
 test_expect_success 'symrefs parameter' '
 	test-tool pkt-line pack >in <<-EOF &&
 	command=ls-refs
+	object-format=$(test_oid algo)
 	0001
 	symrefs
 	ref-prefix refs/heads/
@@ -178,6 +201,7 @@
 test_expect_success 'sending server-options' '
 	test-tool pkt-line pack >in <<-EOF &&
 	command=ls-refs
+	object-format=$(test_oid algo)
 	server-option=hello
 	server-option=world
 	0001
@@ -200,6 +224,7 @@
 
 	test-tool pkt-line pack >in <<-EOF &&
 	command=fetch
+	object-format=$(test_oid algo)
 	0001
 	this-is-not-a-command
 	0000
diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh
index baf1d7b..1b54c35 100755
--- a/t/t5702-protocol-v2.sh
+++ b/t/t5702-protocol-v2.sh
@@ -13,6 +13,7 @@
 daemon_parent=$GIT_DAEMON_DOCUMENT_ROOT_PATH/parent
 
 test_expect_success 'create repo to be served by git-daemon' '
+	test_oid_init &&
 	git init "$daemon_parent" &&
 	test_commit -C "$daemon_parent" one
 '
@@ -393,6 +394,7 @@
 	# Custom request that tries to filter even though it is not advertised.
 	test-tool pkt-line pack >in <<-EOF &&
 	command=fetch
+	object-format=$(test_oid algo)
 	0001
 	want $(git -C server rev-parse master)
 	filter blob:none
diff --git a/t/t5703-upload-pack-ref-in-want.sh b/t/t5703-upload-pack-ref-in-want.sh
index 92ad5ee..748282f 100755
--- a/t/t5703-upload-pack-ref-in-want.sh
+++ b/t/t5703-upload-pack-ref-in-want.sh
@@ -27,6 +27,15 @@
 	test_cmp sorted_commits actual_commits
 }
 
+write_command () {
+	echo "command=$1"
+
+	if test "$(test_oid algo)" != sha1
+	then
+		echo "object-format=$(test_oid algo)"
+	fi
+}
+
 # c(o/foo) d(o/bar)
 #        \ /
 #         b   e(baz)  f(master)
@@ -65,7 +74,7 @@
 
 test_expect_success 'invalid want-ref line' '
 	test-tool pkt-line pack >in <<-EOF &&
-	command=fetch
+	$(write_command fetch)
 	0001
 	no-progress
 	want-ref refs/heads/non-existent
@@ -86,7 +95,7 @@
 
 	oid=$(git rev-parse a) &&
 	test-tool pkt-line pack >in <<-EOF &&
-	command=fetch
+	$(write_command fetch)
 	0001
 	no-progress
 	want-ref refs/heads/master
@@ -110,7 +119,7 @@
 
 	oid=$(git rev-parse b) &&
 	test-tool pkt-line pack >in <<-EOF &&
-	command=fetch
+	$(write_command fetch)
 	0001
 	no-progress
 	want-ref refs/heads/o/foo
@@ -132,7 +141,7 @@
 	git rev-parse e f >expected_commits &&
 
 	test-tool pkt-line pack >in <<-EOF &&
-	command=fetch
+	$(write_command fetch)
 	0001
 	no-progress
 	want-ref refs/heads/master
@@ -155,7 +164,7 @@
 
 	oid=$(git rev-parse c) &&
 	test-tool pkt-line pack >in <<-EOF &&
-	command=fetch
+	$(write_command fetch)
 	0001
 	no-progress
 	want-ref refs/heads/o/foo
diff --git a/t/t5704-protocol-violations.sh b/t/t5704-protocol-violations.sh
index 950cfb2..5c94194 100755
--- a/t/t5704-protocol-violations.sh
+++ b/t/t5704-protocol-violations.sh
@@ -9,6 +9,7 @@
 test_expect_success 'extra delim packet in v2 ls-refs args' '
 	{
 		packetize command=ls-refs &&
+		packetize "object-format=$(test_oid algo)" &&
 		printf 0001 &&
 		# protocol expects 0000 flush here
 		printf 0001
@@ -21,6 +22,7 @@
 test_expect_success 'extra delim packet in v2 fetch args' '
 	{
 		packetize command=fetch &&
+		packetize "object-format=$(test_oid algo)" &&
 		printf 0001 &&
 		# protocol expects 0000 flush here
 		printf 0001
diff --git a/t/t5801/git-remote-testgit b/t/t5801/git-remote-testgit
index 6b9f0b5..1544d6d 100755
--- a/t/t5801/git-remote-testgit
+++ b/t/t5801/git-remote-testgit
@@ -52,9 +52,11 @@
 		test -n "$GIT_REMOTE_TESTGIT_SIGNED_TAGS" && echo "signed-tags"
 		test -n "$GIT_REMOTE_TESTGIT_NO_PRIVATE_UPDATE" && echo "no-private-update"
 		echo 'option'
+		echo 'object-format'
 		echo
 		;;
 	list)
+		echo ":object-format $(git rev-parse --show-object-format=storage)"
 		git for-each-ref --format='? %(refname)' 'refs/heads/' 'refs/tags/'
 		head=$(git symbolic-ref HEAD)
 		echo "@$head HEAD"
@@ -139,6 +141,10 @@
 			test $val = "true" && force="true" || force=
 			echo "ok"
 			;;
+		object-format)
+			test $val = "true" && object_format="true" || object_format=
+			echo "ok"
+			;;
 		*)
 			echo "unsupported"
 			;;
diff --git a/t/t6000-rev-list-misc.sh b/t/t6000-rev-list-misc.sh
index 3dc1ad8..3bb0e4f 100755
--- a/t/t6000-rev-list-misc.sh
+++ b/t/t6000-rev-list-misc.sh
@@ -8,6 +8,7 @@
 	echo content1 >wanted_file &&
 	echo content2 >unwanted_file &&
 	git add wanted_file unwanted_file &&
+	test_tick &&
 	git commit -m one
 '
 
@@ -21,6 +22,7 @@
 	mkdir foo &&
 	>foo/file &&
 	git add foo/file &&
+	test_tick &&
 	git commit -m two &&
 
 	git rev-list --objects HEAD -- foo >output &&
@@ -69,6 +71,7 @@
 '
 
 test_expect_success 'rev-list A..B and rev-list ^A B are the same' '
+	test_tick &&
 	git commit --allow-empty -m another &&
 	git tag -a -m "annotated" v1.0 &&
 	git rev-list --objects ^v1.0^ v1.0 >expect &&
@@ -84,10 +87,10 @@
 test_expect_success 'symleft flag bit is propagated down from tag' '
 	git log --format="%m %s" --left-right v1.0...master >actual &&
 	cat >expect <<-\EOF &&
-	> two
-	> one
 	< another
 	< that
+	> two
+	> one
 	EOF
 	test_cmp expect actual
 '
diff --git a/t/t6041-bisect-submodule.sh b/t/t6041-bisect-submodule.sh
index 62b8a2e..df1eff0 100755
--- a/t/t6041-bisect-submodule.sh
+++ b/t/t6041-bisect-submodule.sh
@@ -10,7 +10,12 @@
 	ls -1pR * >>expect &&
 	tar cf "$TRASH_DIRECTORY/tmp.tar" * &&
 	GOOD=$(git rev-parse --verify HEAD) &&
-	git checkout "$1" &&
+	may_only_be_test_must_fail "$2" &&
+	$2 git checkout "$1" &&
+	if test -n "$2"
+	then
+		return
+	fi &&
 	echo "foo" >bar &&
 	git add bar &&
 	git commit -m "bisect bad" &&
@@ -27,6 +32,6 @@
 	git bisect bad $BAD
 }
 
-test_submodule_switch "git_bisect"
+test_submodule_switch_func "git_bisect"
 
 test_done
diff --git a/t/t6046-merge-skip-unneeded-updates.sh b/t/t6046-merge-skip-unneeded-updates.sh
index 1ddc9e6..5a2d07e 100755
--- a/t/t6046-merge-skip-unneeded-updates.sh
+++ b/t/t6046-merge-skip-unneeded-updates.sh
@@ -661,7 +661,7 @@
 }
 
 # NOTE: For as long as we continue using unpack_trees() without index_only
-#   set to true, it will error out on a case like this claiming the the locally
+#   set to true, it will error out on a case like this claiming that the locally
 #   modified file would be overwritten by the merge.  Getting this testcase
 #   correct requires doing the merge in-memory first, then realizing that no
 #   updates to the file are necessary, and thus that we can just leave the path
diff --git a/t/t6200-fmt-merge-msg.sh b/t/t6200-fmt-merge-msg.sh
index e4c2a6e..7d54974 100755
--- a/t/t6200-fmt-merge-msg.sh
+++ b/t/t6200-fmt-merge-msg.sh
@@ -542,4 +542,24 @@
 	test_cmp expected .git/MERGE_MSG
 '
 
+test_expect_success 'merge.suppressDest configuration' '
+	git checkout -B side master &&
+	git commit --allow-empty -m "One step ahead" &&
+	git checkout master &&
+	git fetch . side &&
+
+	git -c merge.suppressDest="" fmt-merge-msg <.git/FETCH_HEAD >full.1 &&
+	head -n1 full.1 >actual &&
+	grep -e "Merge branch .side. into master" actual &&
+
+	git -c merge.suppressDest="mast" fmt-merge-msg <.git/FETCH_HEAD >full.2 &&
+	head -n1 full.2 >actual &&
+	grep -e "Merge branch .side. into master$" actual &&
+
+	git -c merge.suppressDest="ma??er" fmt-merge-msg <.git/FETCH_HEAD >full.3 &&
+	head -n1 full.3 >actual &&
+	grep -e "Merge branch .side." actual &&
+	! grep -e " into master$" actual
+'
+
 test_done
diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh
index da59fad..ea9bb6d 100755
--- a/t/t6300-for-each-ref.sh
+++ b/t/t6300-for-each-ref.sh
@@ -52,6 +52,25 @@
 		sanitize_pgp <actual >actual.clean &&
 		test_cmp expected actual.clean
 	"
+	# 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
+		test_expect_${4:-sucess} $PREREQ "basic atom: $1 contents:size" '
+			git for-each-ref --format="%(contents:size)" "$ref" >actual &&
+			test_cmp expect actual
+		'
+	fi
 }
 
 hexlen=$(test_oid hexsz)
@@ -650,6 +669,25 @@
 body contents
 $sig"
 
+test_expect_success 'set up refs pointing to tree and blob' '
+	git update-ref refs/mytrees/first refs/heads/master^{tree} &&
+	git update-ref refs/myblobs/first refs/heads/master:one
+'
+
+test_atom refs/mytrees/first subject ""
+test_atom refs/mytrees/first contents:subject ""
+test_atom refs/mytrees/first body ""
+test_atom refs/mytrees/first contents:body ""
+test_atom refs/mytrees/first contents:signature ""
+test_atom refs/mytrees/first contents ""
+
+test_atom refs/myblobs/first subject ""
+test_atom refs/myblobs/first contents:subject ""
+test_atom refs/myblobs/first body ""
+test_atom refs/myblobs/first contents:body ""
+test_atom refs/myblobs/first contents:signature ""
+test_atom refs/myblobs/first contents ""
+
 test_expect_success 'set up multiple-sort tags' '
 	for when in 100000 200000
 	do
diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh
index 36b50d0..c978b6d 100755
--- a/t/t7001-mv.sh
+++ b/t/t7001-mv.sh
@@ -248,6 +248,23 @@
 
 rm -f dirty dirty2
 
+# NB: This test is about the error message
+# as well as the failure.
+test_expect_success 'git mv error on conflicted file' '
+	rm -fr .git &&
+	git init &&
+	>conflict &&
+	test_when_finished "rm -f conflict" &&
+	cfhash=$(git hash-object -w conflict) &&
+	q_to_tab <<-EOF | git update-index --index-info &&
+	0 $cfhash 0Qconflict
+	100644 $cfhash 1Qconflict
+	EOF
+
+	test_must_fail git mv conflict newname 2>actual &&
+	test_i18ngrep "conflicted" actual
+'
+
 test_expect_success 'git mv should overwrite symlink to a file' '
 
 	rm -fr .git &&
diff --git a/t/t7061-wtstatus-ignore.sh b/t/t7061-wtstatus-ignore.sh
index e4cf548..2f9bea9 100755
--- a/t/t7061-wtstatus-ignore.sh
+++ b/t/t7061-wtstatus-ignore.sh
@@ -30,6 +30,31 @@
 	test_cmp expected actual
 '
 
+test_expect_success 'status untracked files --ignored with pathspec (no match)' '
+	git status --porcelain --ignored -- untracked/i >actual &&
+	test_must_be_empty actual &&
+	git status --porcelain --ignored -- untracked/u >actual &&
+	test_must_be_empty actual
+'
+
+test_expect_success 'status untracked files --ignored with pathspec (literal match)' '
+	git status --porcelain --ignored -- untracked/ignored >actual &&
+	echo "!! untracked/ignored" >expected &&
+	test_cmp expected actual &&
+	git status --porcelain --ignored -- untracked/uncommitted >actual &&
+	echo "?? untracked/uncommitted" >expected &&
+	test_cmp expected actual
+'
+
+test_expect_success 'status untracked files --ignored with pathspec (glob match)' '
+	git status --porcelain --ignored -- untracked/i\* >actual &&
+	echo "!! untracked/ignored" >expected &&
+	test_cmp expected actual &&
+	git status --porcelain --ignored -- untracked/u\* >actual &&
+	echo "?? untracked/uncommitted" >expected &&
+	test_cmp expected actual
+'
+
 cat >expected <<\EOF
 ?? .gitignore
 ?? actual
diff --git a/t/t7107-reset-pathspec-file.sh b/t/t7107-reset-pathspec-file.sh
index cad3a9d..15ccb14 100755
--- a/t/t7107-reset-pathspec-file.sh
+++ b/t/t7107-reset-pathspec-file.sh
@@ -22,7 +22,12 @@
 
 verify_expect () {
 	git status --porcelain -- fileA.t fileB.t fileC.t fileD.t >actual &&
-	test_cmp expect actual
+	if test "x$1" = 'x!'
+	then
+		! test_cmp expect actual
+	else
+		test_cmp expect actual
+	fi
 }
 
 test_expect_success '--pathspec-from-file from stdin' '
@@ -131,7 +136,7 @@
 	cat >expect <<-\EOF &&
 	 D fileA.t
 	EOF
-	test_must_fail verify_expect
+	verify_expect !
 '
 
 test_expect_success 'only touches what was listed' '
diff --git a/t/t7112-reset-submodule.sh b/t/t7112-reset-submodule.sh
index 6734642..19830d9 100755
--- a/t/t7112-reset-submodule.sh
+++ b/t/t7112-reset-submodule.sh
@@ -12,10 +12,10 @@
 
 test_submodule_forced_switch_recursing_with_args "reset --hard"
 
-test_submodule_switch "git reset --keep"
+test_submodule_switch "reset --keep"
 
-test_submodule_switch "git reset --merge"
+test_submodule_switch "reset --merge"
 
-test_submodule_forced_switch "git reset --hard"
+test_submodule_forced_switch "reset --hard"
 
 test_done
diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh
index 4fb447a..aa19ff3 100755
--- a/t/t7406-submodule-update.sh
+++ b/t/t7406-submodule-update.sh
@@ -70,6 +70,22 @@
 	)
 '
 
+test_expect_success 'update --remote falls back to using HEAD' '
+	test_create_repo main-branch-submodule &&
+	test_commit -C main-branch-submodule initial &&
+
+	test_create_repo main-branch &&
+	git -C main-branch submodule add ../main-branch-submodule &&
+	git -C main-branch commit -m add-submodule &&
+
+	git -C main-branch-submodule switch -c hello &&
+	test_commit -C main-branch-submodule world &&
+
+	git clone --recursive main-branch main-branch-clone &&
+	git -C main-branch-clone submodule update --remote main-branch-submodule &&
+	test_path_exists main-branch-clone/main-branch-submodule/world.t
+'
+
 test_expect_success 'submodule update detaching the HEAD ' '
 	(cd super/submodule &&
 	 git reset --hard HEAD~1
diff --git a/t/t7419-submodule-set-branch.sh b/t/t7419-submodule-set-branch.sh
index fd25f78..3b925c3 100755
--- a/t/t7419-submodule-set-branch.sh
+++ b/t/t7419-submodule-set-branch.sh
@@ -52,12 +52,13 @@
 '
 
 test_expect_success 'test submodule set-branch --default' '
+	test_commit -C submodule c &&
 	(cd super &&
 		git submodule set-branch --default submodule &&
 		! grep branch .gitmodules &&
 		git submodule update --remote &&
 		cat <<-\EOF >expect &&
-		a
+		c
 		EOF
 		git -C submodule show -s --pretty=%s >actual &&
 		test_cmp expect actual
@@ -65,6 +66,7 @@
 '
 
 test_expect_success 'test submodule set-branch -b' '
+	test_commit -C submodule b &&
 	(cd super &&
 		git submodule set-branch -b topic submodule &&
 		grep "branch = topic" .gitmodules &&
@@ -78,12 +80,13 @@
 '
 
 test_expect_success 'test submodule set-branch -d' '
+	test_commit -C submodule d &&
 	(cd super &&
 		git submodule set-branch -d submodule &&
 		! grep branch .gitmodules &&
 		git submodule update --remote &&
 		cat <<-\EOF >expect &&
-		a
+		d
 		EOF
 		git -C submodule show -s --pretty=%s >actual &&
 		test_cmp expect actual
diff --git a/t/t7613-merge-submodule.sh b/t/t7613-merge-submodule.sh
index d1e9fcc..04bf4be 100755
--- a/t/t7613-merge-submodule.sh
+++ b/t/t7613-merge-submodule.sh
@@ -6,14 +6,14 @@
 . "$TEST_DIRECTORY"/lib-submodule-update.sh
 
 # merges without conflicts
-test_submodule_switch "git merge"
+test_submodule_switch "merge"
 
-test_submodule_switch "git merge --ff"
+test_submodule_switch "merge --ff"
 
-test_submodule_switch "git merge --ff-only"
+test_submodule_switch "merge --ff-only"
 
 KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1
 KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
-test_submodule_switch "git merge --no-ff"
+test_submodule_switch "merge --no-ff"
 
 test_done
diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh
index 29b9290..524f30f 100755
--- a/t/t7800-difftool.sh
+++ b/t/t7800-difftool.sh
@@ -720,6 +720,14 @@
 	test_cmp expect actual
 '
 
+test_expect_success 'add -N and difftool -d' '
+	test_when_finished git reset --hard &&
+
+	test_write_lines A B C >intent-to-add &&
+	git add -N intent-to-add &&
+	git difftool --dir-diff --extcmd ls
+'
+
 test_expect_success 'outside worktree' '
 	echo 1 >1 &&
 	echo 2 >2 &&
diff --git a/t/t8014-blame-ignore-fuzzy.sh b/t/t8014-blame-ignore-fuzzy.sh
index 6e61882..e68e611 100755
--- a/t/t8014-blame-ignore-fuzzy.sh
+++ b/t/t8014-blame-ignore-fuzzy.sh
@@ -248,7 +248,7 @@
 EOF
 
 # The first line of b matches best with the last line of a, but the overall
-# match is better if we match it with the the first line of a.
+# match is better if we match it with the first line of a.
 title11="Piggy in the middle"
 cat <<EOF >a11
 abcdefg
diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
index 90f61c3..ec26108 100755
--- a/t/t9001-send-email.sh
+++ b/t/t9001-send-email.sh
@@ -42,7 +42,8 @@
 }
 
 test_expect_success $PREREQ 'Extract patches' '
-	patches=$(git format-patch -s --cc="One <one@example.com>" --cc=two@example.com -n HEAD^1)
+	patches=$(git format-patch -s --cc="One <one@example.com>" --cc=two@example.com -n HEAD^1) &&
+	threaded_patches=$(git format-patch -o threaded -s --in-reply-to="format" HEAD^1)
 '
 
 # Test no confirm early to ensure remaining tests will not hang
@@ -1219,6 +1220,17 @@
 	grep "In-Reply-To: " stdout
 '
 
+test_expect_success $PREREQ 'override in-reply-to if no threading' '
+	git send-email \
+		--dry-run \
+		--from="Example <nobody@example.com>" \
+		--to=nobody@example.com \
+		--no-thread \
+		--in-reply-to="override" \
+		$threaded_patches >stdout &&
+	grep "In-Reply-To: <override>" stdout
+'
+
 test_expect_success $PREREQ 'sendemail.to works' '
 	git config --replace-all sendemail.to "Somebody <somebody@ex.com>" &&
 	git send-email \
diff --git a/t/t9020-remote-svn.sh b/t/t9020-remote-svn.sh
index 9fcfa96..754c4a3 100755
--- a/t/t9020-remote-svn.sh
+++ b/t/t9020-remote-svn.sh
@@ -84,6 +84,12 @@
 	test_cmp master.good .git/refs/remotes/svnsim/master
 '
 
+test_expect_success REMOTE_SVN 'respects configured default initial branch' '
+	git -c init.defaultBranch=trunk remote add -f trunk \
+		"testsvn::file://$TEST_DIRECTORY/t9154/svn.dump" &&
+	git rev-parse --verify refs/remotes/trunk/trunk
+'
+
 test_debug 'git branch -a'
 
 test_done
diff --git a/t/t9100-git-svn-basic.sh b/t/t9100-git-svn-basic.sh
index 2c309a5..3055943 100755
--- a/t/t9100-git-svn-basic.sh
+++ b/t/t9100-git-svn-basic.sh
@@ -200,17 +200,19 @@
 export GIT_SVN_ID
 test_expect_success "$name" \
     'git svn init "$svnrepo" && git svn fetch &&
-     git rev-list --pretty=raw remotes/git-svn | grep ^tree | uniq > a &&
-     git rev-list --pretty=raw remotes/alt | grep ^tree | uniq > b &&
+     git log --format="tree %T %s" remotes/git-svn |
+	awk "!seen[\$0]++ { print \$1, \$2 }" >a &&
+     git log --format="tree %T" alt >b &&
      test_cmp a b'
 
 name='check imported tree checksums expected tree checksums'
 rm -f expected
 if test_have_prereq UTF8
 then
-	echo tree dc68b14b733e4ec85b04ab6f712340edc5dc936e > expected
+	echo tree dc68b14b733e4ec85b04ab6f712340edc5dc936e > expected.sha1
+	echo tree b95b55b29d771f5eb73aa9b9d52d02fe11a2538c2feb0829f754ce20a91d98eb > expected.sha256
 fi
-cat >> expected <<\EOF
+cat >> expected.sha1 <<\EOF
 tree c3322890dcf74901f32d216f05c5044f670ce632
 tree d3ccd5035feafd17b030c5732e7808cc49122853
 tree d03e1630363d4881e68929d532746b20b0986b83
@@ -220,8 +222,20 @@
 tree d667270a1f7b109f5eb3aaea21ede14b56bfdd6e
 tree 8f51f74cf0163afc9ad68a4b1537288c4558b5a4
 EOF
+cat >> expected.sha256 <<\EOF
+tree 8d12756699d0b5b110514240a0ff141f6cbf8891fd69ab05e5594196fb437c9f
+tree 8187168d33f7d4ccb8c1cc6e99532810aaccb47658f35d19b3803072d1128d7a
+tree 74e535d85da8ee25eb23d7b506790c5ab3ccdb1ba0826bd57625ed44ef361650
+tree 6fd7dd963e3cdca0cbd6368ed3cfcc8037cc154d2e7719d9d369a0952364fd95
+tree 1fd6cec6aa95102d69266e20419bb62ec2a06372d614b9850ef23ff204103bb4
+tree 6fd7dd963e3cdca0cbd6368ed3cfcc8037cc154d2e7719d9d369a0952364fd95
+tree deb2b7ac79cd8ce6f52af6a5a0a08691e94ba74a2ed55966bb27dbec551730eb
+tree 59e2e936761188476a7752034e8aa0a822b34050c8504b0dfd946407f4bc9215
+EOF
 
-test_expect_success POSIXPERM,SYMLINKS "$name" "test_cmp expected a"
+test_expect_success POSIXPERM,SYMLINKS "$name" '
+	test_cmp expected.$(test_oid algo) a
+'
 
 test_expect_success 'exit if remote refs are ambigious' '
         git config --add svn-remote.svn.fetch \
diff --git a/t/t9101-git-svn-props.sh b/t/t9101-git-svn-props.sh
index c26c4b0..8b5681d 100755
--- a/t/t9101-git-svn-props.sh
+++ b/t/t9101-git-svn-props.sh
@@ -160,11 +160,13 @@
 /no-such-file*
 EOF
 
-cat >create-ignore-index.expect <<\EOF
-100644 8c52e5dfcd0a8b6b6bcfe6b41b89bcbf493718a5 0	.gitignore
-100644 8c52e5dfcd0a8b6b6bcfe6b41b89bcbf493718a5 0	deeply/.gitignore
-100644 8c52e5dfcd0a8b6b6bcfe6b41b89bcbf493718a5 0	deeply/nested/.gitignore
-100644 8c52e5dfcd0a8b6b6bcfe6b41b89bcbf493718a5 0	deeply/nested/directory/.gitignore
+expectoid=$(git hash-object create-ignore.expect)
+
+cat >create-ignore-index.expect <<EOF
+100644 $expectoid 0	.gitignore
+100644 $expectoid 0	deeply/.gitignore
+100644 $expectoid 0	deeply/nested/.gitignore
+100644 $expectoid 0	deeply/nested/directory/.gitignore
 EOF
 
 test_expect_success 'test create-ignore' "
diff --git a/t/t9104-git-svn-follow-parent.sh b/t/t9104-git-svn-follow-parent.sh
index 5e0ad19..67eed2f 100755
--- a/t/t9104-git-svn-follow-parent.sh
+++ b/t/t9104-git-svn-follow-parent.sh
@@ -161,6 +161,7 @@
 	'
 
 test_expect_success "follow-parent is atomic" '
+	record_size=$(($(test_oid rawsz) + 4)) &&
 	(
 		cd wc &&
 		svn_cmd up &&
@@ -186,7 +187,7 @@
 	mkdir -p "$GIT_DIR"/svn/refs/remotes/flunk@18 &&
 	rev_map=$(cd "$GIT_DIR"/svn/refs/remotes/stunk && ls .rev_map*) &&
 	dd if="$GIT_DIR"/svn/refs/remotes/stunk/$rev_map \
-	   of="$GIT_DIR"/svn/refs/remotes/flunk@18/$rev_map bs=24 count=1 &&
+	   of="$GIT_DIR"/svn/refs/remotes/flunk@18/$rev_map bs=$record_size count=1 &&
 	rm -rf "$GIT_DIR"/svn/refs/remotes/stunk &&
 	git svn init --minimize-url -i flunk "$svnrepo"/flunk &&
 	git svn fetch -i flunk &&
diff --git a/t/t9108-git-svn-glob.sh b/t/t9108-git-svn-glob.sh
index 6990f64..d5939d4 100755
--- a/t/t9108-git-svn-glob.sh
+++ b/t/t9108-git-svn-glob.sh
@@ -48,7 +48,7 @@
 	                 "tags/*/src/a:refs/remotes/tags/*" &&
 	git svn multi-fetch &&
 	git log --pretty=oneline refs/remotes/tags/end >actual &&
-	sed -e "s/^.\{41\}//" actual >output.end &&
+	cut -d" " -f2- actual >output.end &&
 	test_cmp expect.end output.end &&
 	test "$(git rev-parse refs/remotes/tags/end~1)" = \
 		"$(git rev-parse refs/remotes/branches/start)" &&
@@ -84,7 +84,7 @@
 	test $(git rev-parse refs/remotes/two/tags/end~3) = \
 	     $(git rev-parse refs/remotes/two/branches/start) &&
 	git log --pretty=oneline refs/remotes/two/tags/end >actual &&
-	sed -e "s/^.\{41\}//" actual >output.two &&
+	cut -d" " -f2- actual >output.two &&
 	test_cmp expect.two output.two
 	'
 
diff --git a/t/t9109-git-svn-multi-glob.sh b/t/t9109-git-svn-multi-glob.sh
index c1e7542..648dcee 100755
--- a/t/t9109-git-svn-multi-glob.sh
+++ b/t/t9109-git-svn-multi-glob.sh
@@ -48,7 +48,7 @@
 	                 "tags/*/src/a:refs/remotes/tags/*" &&
 	git svn multi-fetch &&
 	git log --pretty=oneline refs/remotes/tags/end >actual &&
-	sed -e "s/^.\{41\}//" actual >output.end &&
+	cut -d" " -f2- actual >output.end &&
 	test_cmp expect.end output.end &&
 	test "$(git rev-parse refs/remotes/tags/end~1)" = \
 		"$(git rev-parse refs/remotes/branches/v1/start)" &&
@@ -84,7 +84,7 @@
 	test $(git rev-parse refs/remotes/two/tags/end~3) = \
 	     $(git rev-parse refs/remotes/two/branches/v1/start) &&
 	git log --pretty=oneline refs/remotes/two/tags/end >actual &&
-	sed -e "s/^.\{41\}//" actual >output.two &&
+	cut -d" " -f2- actual >output.two &&
 	test_cmp expect.two output.two
 	'
 cat > expect.four <<EOF
@@ -135,7 +135,7 @@
 	test $(git rev-parse refs/remotes/four/tags/next~2) = \
 	     $(git rev-parse refs/remotes/four/branches/v2/start) &&
 	git log --pretty=oneline refs/remotes/four/tags/next >actual &&
-	sed -e "s/^.\{41\}//" actual >output.four &&
+	cut -d" " -f2- actual >output.four &&
 	test_cmp expect.four output.four
 	'
 
diff --git a/t/t9168-git-svn-partially-globbed-names.sh b/t/t9168-git-svn-partially-globbed-names.sh
index bdf6e84..854b341 100755
--- a/t/t9168-git-svn-partially-globbed-names.sh
+++ b/t/t9168-git-svn-partially-globbed-names.sh
@@ -49,7 +49,7 @@
 			 "tags/t_*/src/a:refs/remotes/tags/t_*" &&
 	git svn multi-fetch &&
 	git log --pretty=oneline refs/remotes/tags/t_end >actual &&
-	sed -e "s/^.\{41\}//" actual >output.end &&
+	cut -d" " -f2- actual >output.end &&
 	test_cmp expect.end output.end &&
 	test "$(git rev-parse refs/remotes/tags/t_end~1)" = \
 		"$(git rev-parse refs/remotes/branches/b_start)" &&
@@ -87,7 +87,7 @@
 	test $(git rev-parse refs/remotes/two/tags/t_end~3) = \
 	     $(git rev-parse refs/remotes/two/branches/b_start) &&
 	git log --pretty=oneline refs/remotes/two/tags/t_end >actual &&
-	sed -e "s/^.\{41\}//" actual >output.two &&
+	cut -d" " -f2- actual >output.two &&
 	test_cmp expect.two output.two
 	'
 
@@ -129,7 +129,7 @@
 	test $(git rev-parse refs/remotes/three/tags/t_~1) = \
 	     $(git rev-parse refs/remotes/three/branches/b_) &&
 	git log --pretty=oneline refs/remotes/three/tags/t_ >actual &&
-	sed -e "s/^.\{41\}//" actual >output.three &&
+	cut -d" " -f2- actual >output.three &&
 	test_cmp expect.three output.three
 	'
 
@@ -199,7 +199,7 @@
 	test $(git rev-parse refs/remotes/five/tags/fghij~1) = \
 	     $(git rev-parse refs/remotes/five/branches/abcde) &&
 	git log --pretty=oneline refs/remotes/five/tags/fghij >actual &&
-	sed -e "s/^.\{41\}//" actual >output.five &&
+	cut -d" " -f2- actual >output.five &&
 	test_cmp expect.five output.five
 	'
 
diff --git a/t/t9351-fast-export-anonymize.sh b/t/t9351-fast-export-anonymize.sh
index 897dc50..5ac2c3b 100755
--- a/t/t9351-fast-export-anonymize.sh
+++ b/t/t9351-fast-export-anonymize.sh
@@ -6,15 +6,24 @@
 test_expect_success 'setup simple repo' '
 	test_commit base &&
 	test_commit foo &&
+	test_commit retain-me &&
 	git checkout -b other HEAD^ &&
 	mkdir subdir &&
 	test_commit subdir/bar &&
 	test_commit subdir/xyzzy &&
+	fake_commit=$(echo $ZERO_OID | sed s/0/a/) &&
+	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
 '
 
 test_expect_success 'export anonymized stream' '
-	git fast-export --anonymize --all >stream
+	git fast-export --anonymize --all \
+		--anonymize-map=retain-me \
+		--anonymize-map=xyzzy:custom-name \
+		--anonymize-map=other \
+		>stream
 '
 
 # this also covers commit messages
@@ -26,12 +35,23 @@
 	! grep xyzzy stream
 '
 
-test_expect_success 'stream allows master as refname' '
-	grep master stream
+test_expect_success 'stream contains user-specified names' '
+	grep retain-me stream &&
+	grep custom-name stream
+'
+
+test_expect_success 'stream omits gitlink oids' '
+	# avoid relying on the whole oid to remain hash-agnostic; this is
+	# plenty to be unique within our test case
+	! grep a000000000000000000 stream
+'
+
+test_expect_success 'stream retains other as refname' '
+	grep other stream
 '
 
 test_expect_success 'stream omits other refnames' '
-	! grep other stream &&
+	! grep master stream &&
 	! grep mytag stream
 '
 
@@ -57,7 +77,8 @@
 test_expect_success 'result has two branches' '
 	git for-each-ref --format="%(refname)" refs/heads >branches &&
 	test_line_count = 2 branches &&
-	other_branch=$(grep -v refs/heads/master branches)
+	other_branch=refs/heads/other &&
+	main_branch=$(grep -v $other_branch branches)
 '
 
 test_expect_success 'repo has original shape and timestamps' '
@@ -65,34 +86,35 @@
 		git log --format="%m %ct" --left-right --boundary "$@"
 	} &&
 	(cd .. && shape master...other) >expect &&
-	shape master...$other_branch >actual &&
+	shape $main_branch...$other_branch >actual &&
 	test_cmp expect actual
 '
 
 test_expect_success 'root tree has original shape' '
 	# the output entries are not necessarily in the same
-	# order, but we know at least that we will have one tree
-	# and one blob, so just check the sorted order
-	cat >expect <<-\EOF &&
-	blob
-	tree
-	EOF
+	# order, but we should at least have the same set of
+	# object types.
+	git -C .. ls-tree HEAD >orig-root &&
+	cut -d" " -f2 <orig-root | sort >expect &&
 	git ls-tree $other_branch >root &&
 	cut -d" " -f2 <root | sort >actual &&
 	test_cmp expect actual
 '
 
 test_expect_success 'paths in subdir ended up in one tree' '
-	cat >expect <<-\EOF &&
-	blob
-	blob
-	EOF
+	git -C .. ls-tree other:subdir >orig-subdir &&
+	cut -d" " -f2 <orig-subdir | sort >expect &&
 	tree=$(grep tree root | cut -f2) &&
 	git ls-tree $other_branch:$tree >tree &&
 	cut -d" " -f2 <tree >actual &&
 	test_cmp expect actual
 '
 
+test_expect_success 'identical gitlinks got identical oid' '
+	awk "/commit/ { print \$3 }" <root | sort -u >commits &&
+	test_line_count = 1 commits
+'
+
 test_expect_success 'tag points to branch tip' '
 	git rev-parse $other_branch >expect &&
 	git for-each-ref --format="%(*objectname)" | grep . >actual &&
diff --git a/t/t9400-git-cvsserver-server.sh b/t/t9400-git-cvsserver-server.sh
index a5e5dca..4a46f31 100755
--- a/t/t9400-git-cvsserver-server.sh
+++ b/t/t9400-git-cvsserver-server.sh
@@ -603,7 +603,7 @@
 		cd cvswork &&
 		CVS_SERVER=$WORKDIR/remote-cvs &&
 		export CVS_SERVER &&
-		test_must_fail cvs log merge
+		! cvs log merge
 	)
 '
 
diff --git a/t/t9700/test.pl b/t/t9700/test.pl
index 34cd013..c59a015 100755
--- a/t/t9700/test.pl
+++ b/t/t9700/test.pl
@@ -59,15 +59,15 @@
 open STDERR, ">&", $tmpstderr or die "cannot restore STDERR";
 
 # ident
-like($r->ident("aUthor"), qr/^A U Thor <author\@example.com> [0-9]+ \+0000$/,
+like($r->ident("aUthor"), qr/^A U Thor <author\@example.com> [0-9]+ [+-]\d{4}$/,
      "ident scalar: author (type)");
-like($r->ident("cOmmitter"), qr/^C O Mitter <committer\@example.com> [0-9]+ \+0000$/,
+like($r->ident("cOmmitter"), qr/^C O Mitter <committer\@example.com> [0-9]+ [+-]\d{4}$/,
      "ident scalar: committer (type)");
 is($r->ident("invalid"), "invalid", "ident scalar: invalid ident string (no parsing)");
 my ($name, $email, $time_tz) = $r->ident('author');
 is_deeply([$name, $email], ["A U Thor", "author\@example.com"],
 	 "ident array: author");
-like($time_tz, qr/[0-9]+ \+0000/, "ident array: author");
+like($time_tz, qr/[0-9]+ [+-]\d{4}/, "ident array: author");
 is_deeply([$r->ident("Name <email> 123 +0000")], ["Name", "email", "123 +0000"],
 	  "ident array: ident string");
 is_deeply([$r->ident("invalid")], [], "ident array: invalid ident string");
diff --git a/t/t9834-git-p4-file-dir-bug.sh b/t/t9834-git-p4-file-dir-bug.sh
index 031e1f8..dac67e8 100755
--- a/t/t9834-git-p4-file-dir-bug.sh
+++ b/t/t9834-git-p4-file-dir-bug.sh
@@ -10,7 +10,7 @@
 
 test_expect_success 'start p4d' '
 	start_p4d &&
-	test_might_fail p4 configure set submit.collision.check=0
+	{ p4 configure set submit.collision.check=0 || :; }
 '
 
 test_expect_success 'init depot' '
diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
index 8f434a0..8425b9a 100755
--- a/t/t9902-completion.sh
+++ b/t/t9902-completion.sh
@@ -494,7 +494,7 @@
 '
 
 test_expect_success '__gitcomp - suffix' '
-	test_gitcomp "branch.me" "master maint next pu" "branch." \
+	test_gitcomp "branch.me" "master maint next seen" "branch." \
 		"ma" "." <<-\EOF
 	branch.master.Z
 	branch.maint.Z
@@ -545,7 +545,7 @@
 maint
 master
 next
-pu
+seen
 EOF
 
 test_expect_success '__gitcomp_nl - trailing space' '
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 3103be8..b791933 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -798,6 +798,37 @@
 	return 1
 }
 
+# Returns success if the arguments indicate that a command should be
+# accepted by test_must_fail(). If the command is run with env, the env
+# and its corresponding variable settings will be stripped before we
+# test the command being run.
+test_must_fail_acceptable () {
+	if test "$1" = "env"
+	then
+		shift
+		while test $# -gt 0
+		do
+			case "$1" in
+			*?=*)
+				shift
+				;;
+			*)
+				break
+				;;
+			esac
+		done
+	fi
+
+	case "$1" in
+	git|__git*|test-tool|test-svn-fe|test_terminal)
+		return 0
+		;;
+	*)
+		return 1
+		;;
+	esac
+}
+
 # This is not among top-level (test_expect_success | test_expect_failure)
 # but is a prefix that can be used in the test script, like:
 #
@@ -817,6 +848,17 @@
 #     Multiple signals can be specified as a comma separated list.
 #     Currently recognized signal names are: sigpipe, success.
 #     (Don't use 'success', use 'test_might_fail' instead.)
+#
+# Do not use this to run anything but "git" and other specific testable
+# commands (see test_must_fail_acceptable()).  We are not in the
+# business of vetting system supplied commands -- in other words, this
+# is wrong:
+#
+#    test_must_fail grep pattern output
+#
+# Instead use '!':
+#
+#    ! grep pattern output
 
 test_must_fail () {
 	case "$1" in
@@ -828,6 +870,11 @@
 		_test_ok=
 		;;
 	esac
+	if ! test_must_fail_acceptable "$@"
+	then
+		echo >&7 "test_must_fail: only 'git' is allowed: $*"
+		return 1
+	fi
 	"$@" 2>&7
 	exit_code=$?
 	if test $exit_code -eq 0 && ! list_contains "$_test_ok" success
diff --git a/t/test-lib.sh b/t/test-lib.sh
index dbc027f..ba224c8 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -441,15 +441,18 @@
 TEST_AUTHOR_DOMAIN=example.com
 GIT_AUTHOR_EMAIL=${TEST_AUTHOR_LOCALNAME}@${TEST_AUTHOR_DOMAIN}
 GIT_AUTHOR_NAME='A U Thor'
+GIT_AUTHOR_DATE='1112354055 +0200'
 TEST_COMMITTER_LOCALNAME=committer
 TEST_COMMITTER_DOMAIN=example.com
 GIT_COMMITTER_EMAIL=${TEST_COMMITTER_LOCALNAME}@${TEST_COMMITTER_DOMAIN}
 GIT_COMMITTER_NAME='C O Mitter'
+GIT_COMMITTER_DATE='1112354055 +0200'
 GIT_MERGE_VERBOSITY=5
 GIT_MERGE_AUTOEDIT=no
 export GIT_MERGE_VERBOSITY GIT_MERGE_AUTOEDIT
 export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME
 export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME
+export GIT_COMMITTER_DATE GIT_AUTHOR_DATE
 export EDITOR
 
 # Tests using GIT_TRACE typically don't want <timestamp> <file>:<line> output
@@ -1414,6 +1417,7 @@
 
 ZERO_OID=$(test_oid zero)
 OID_REGEX=$(echo $ZERO_OID | sed -e 's/0/[0-9a-f]/g')
+OIDPATH_REGEX=$(test_oid_to_path $ZERO_OID | sed -e 's/0/[0-9a-f]/g')
 EMPTY_TREE=$(test_oid empty_tree)
 EMPTY_BLOB=$(test_oid empty_blob)
 _z40=$ZERO_OID
diff --git a/tag.c b/tag.c
index 71b5444..1ed2684 100644
--- a/tag.c
+++ b/tag.c
@@ -103,7 +103,7 @@
 	struct object *obj = lookup_object(r, oid);
 	if (!obj)
 		return create_object(r, oid, alloc_tag_node(r));
-	return object_as_type(r, obj, OBJ_TAG, 0);
+	return object_as_type(obj, OBJ_TAG, 0);
 }
 
 static timestamp_t parse_tag_date(const char *buf, const char *tail)
diff --git a/transport-helper.c b/transport-helper.c
index 93a6f50..c6b753b 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -32,7 +32,8 @@
 		signed_tags : 1,
 		check_connectivity : 1,
 		no_disconnect_req : 1,
-		no_private_update : 1;
+		no_private_update : 1,
+		object_format : 1;
 
 	/*
 	 * As an optimization, the transport code may invoke fetch before
@@ -207,6 +208,8 @@
 			data->import_marks = xstrdup(arg);
 		} else if (starts_with(capname, "no-private-update")) {
 			data->no_private_update = 1;
+		} else if (starts_with(capname, "object-format")) {
+			data->object_format = 1;
 		} else if (mandatory) {
 			die(_("unknown mandatory capability %s; this remote "
 			      "helper probably needs newer version of Git"),
@@ -1047,7 +1050,7 @@
 	if (!remote_refs) {
 		fprintf(stderr,
 			_("No refs in common and none specified; doing nothing.\n"
-			  "Perhaps you should specify a branch such as 'master'.\n"));
+			  "Perhaps you should specify a branch.\n"));
 		return 0;
 	}
 
@@ -1104,6 +1107,12 @@
 	data->get_refs_list_called = 1;
 	helper = get_helper(transport);
 
+	if (data->object_format) {
+		write_str_in_full(helper->in, "option object-format\n");
+		if (recvline(data, &buf) || strcmp(buf.buf, "ok"))
+			exit(128);
+	}
+
 	if (data->push && for_push)
 		write_str_in_full(helper->in, "list for-push\n");
 	else
@@ -1116,6 +1125,17 @@
 
 		if (!*buf.buf)
 			break;
+		else if (buf.buf[0] == ':') {
+			const char *value;
+			if (skip_prefix(buf.buf, ":object-format ", &value)) {
+				int algo = hash_algo_by_name(value);
+				if (algo == GIT_HASH_UNKNOWN)
+					die(_("unsupported object format '%s'"),
+					    value);
+				transport->hash_algo = &hash_algos[algo];
+			}
+			continue;
+		}
 
 		eov = strchr(buf.buf, ' ');
 		if (!eov)
@@ -1128,7 +1148,7 @@
 		if (buf.buf[0] == '@')
 			(*tail)->symref = xstrdup(buf.buf + 1);
 		else if (buf.buf[0] != '?')
-			get_oid_hex(buf.buf, &(*tail)->old_oid);
+			get_oid_hex_algop(buf.buf, &(*tail)->old_oid, transport->hash_algo);
 		if (eon) {
 			if (has_attribute(eon + 1, "unchanged")) {
 				(*tail)->status |= REF_STATUS_UPTODATE;
diff --git a/transport.c b/transport.c
index 6ee6771..b41386e 100644
--- a/transport.c
+++ b/transport.c
@@ -143,6 +143,9 @@
 	data->fd = read_bundle_header(transport->url, &data->header);
 	if (data->fd < 0)
 		die(_("could not read bundle '%s'"), transport->url);
+
+	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);
@@ -157,11 +160,14 @@
 			       int nr_heads, struct ref **to_fetch)
 {
 	struct bundle_transport_data *data = transport->data;
+	int ret;
 
 	if (!data->get_refs_from_bundle_called)
 		get_refs_from_bundle(transport, 0, NULL);
-	return unbundle(the_repository, &data->header, data->fd,
-			transport->progress ? BUNDLE_VERBOSE : 0);
+	ret = unbundle(the_repository, &data->header, data->fd,
+			   transport->progress ? BUNDLE_VERBOSE : 0);
+	transport->hash_algo = data->header.hash_algo;
+	return ret;
 }
 
 static int close_bundle(struct transport *transport)
@@ -312,6 +318,7 @@
 		BUG("unknown protocol version");
 	}
 	data->got_remote_heads = 1;
+	transport->hash_algo = reader.hash_algo;
 
 	if (reader.line_peeked)
 		BUG("buffer must be empty at the end of handshake()");
@@ -989,9 +996,16 @@
 			ret->smart_options->receivepack = remote->receivepack;
 	}
 
+	ret->hash_algo = &hash_algos[GIT_HASH_SHA1];
+
 	return ret;
 }
 
+const struct git_hash_algo *transport_get_hash_algo(struct transport *transport)
+{
+	return transport->hash_algo;
+}
+
 int transport_set_option(struct transport *transport,
 			 const char *name, const char *value)
 {
diff --git a/transport.h b/transport.h
index 05efa72..b3c3013 100644
--- a/transport.h
+++ b/transport.h
@@ -115,6 +115,8 @@
 	struct git_transport_options *smart_options;
 
 	enum transport_family family;
+
+	const struct git_hash_algo *hash_algo;
 };
 
 #define TRANSPORT_PUSH_ALL			(1<<0)
@@ -243,6 +245,12 @@
 const struct ref *transport_get_remote_refs(struct transport *transport,
 					    const struct argv_array *ref_prefixes);
 
+/*
+ * Fetch the hash algorithm used by a remote.
+ *
+ * This can only be called after fetching the remote refs.
+ */
+const struct git_hash_algo *transport_get_hash_algo(struct transport *transport);
 int transport_fetch_refs(struct transport *transport, struct ref *refs);
 void transport_unlock_pack(struct transport *transport);
 int transport_disconnect(struct transport *transport);
diff --git a/tree-diff.c b/tree-diff.c
index f3d303c..6ebad1a 100644
--- a/tree-diff.c
+++ b/tree-diff.c
@@ -29,9 +29,9 @@
 	struct combine_diff_path *p, const struct object_id *oid,
 	const struct object_id **parents_oid, int nparent,
 	struct strbuf *base, struct diff_options *opt);
-static int ll_diff_tree_oid(const struct object_id *old_oid,
-			    const struct object_id *new_oid,
-			    struct strbuf *base, struct diff_options *opt);
+static void ll_diff_tree_oid(const struct object_id *old_oid,
+			     const struct object_id *new_oid,
+			     struct strbuf *base, struct diff_options *opt);
 
 /*
  * Compare two tree entries, taking into account only path/S_ISDIR(mode),
@@ -679,9 +679,9 @@
 	q->nr = 1;
 }
 
-static int ll_diff_tree_oid(const struct object_id *old_oid,
-			    const struct object_id *new_oid,
-			    struct strbuf *base, struct diff_options *opt)
+static void ll_diff_tree_oid(const struct object_id *old_oid,
+			     const struct object_id *new_oid,
+			     struct strbuf *base, struct diff_options *opt)
 {
 	struct combine_diff_path phead, *p;
 	pathchange_fn_t pathchange_old = opt->pathchange;
@@ -697,29 +697,27 @@
 	}
 
 	opt->pathchange = pathchange_old;
-	return 0;
 }
 
-int diff_tree_oid(const struct object_id *old_oid,
-		  const struct object_id *new_oid,
-		  const char *base_str, struct diff_options *opt)
+void diff_tree_oid(const struct object_id *old_oid,
+		   const struct object_id *new_oid,
+		   const char *base_str, struct diff_options *opt)
 {
 	struct strbuf base;
-	int retval;
 
 	strbuf_init(&base, PATH_MAX);
 	strbuf_addstr(&base, base_str);
 
-	retval = ll_diff_tree_oid(old_oid, new_oid, &base, opt);
+	ll_diff_tree_oid(old_oid, new_oid, &base, opt);
 	if (!*base_str && opt->flags.follow_renames && diff_might_be_rename())
 		try_to_follow_renames(old_oid, new_oid, &base, opt);
 
 	strbuf_release(&base);
-
-	return retval;
 }
 
-int diff_root_tree_oid(const struct object_id *new_oid, const char *base, struct diff_options *opt)
+void diff_root_tree_oid(const struct object_id *new_oid,
+			const char *base,
+			struct diff_options *opt)
 {
-	return diff_tree_oid(NULL, new_oid, base, opt);
+	diff_tree_oid(NULL, new_oid, base, opt);
 }
diff --git a/tree-walk.c b/tree-walk.c
index bb0ad34..0160294 100644
--- a/tree-walk.c
+++ b/tree-walk.c
@@ -851,7 +851,14 @@
 	if (matchlen > pathlen) {
 		if (match[pathlen] != '/')
 			return 0;
-		if (!S_ISDIR(entry->mode) && !S_ISGITLINK(entry->mode))
+		/*
+		 * Reject non-directories as partial pathnames, except
+		 * when match is a submodule with a trailing slash and
+		 * nothing else (to handle 'submod/' and 'submod'
+		 * uniformly).
+		 */
+		if (!S_ISDIR(entry->mode) &&
+		    (!S_ISGITLINK(entry->mode) || matchlen > pathlen + 1))
 			return 0;
 	}
 
diff --git a/tree.c b/tree.c
index 1466bcc..e76517f 100644
--- a/tree.c
+++ b/tree.c
@@ -200,7 +200,7 @@
 	struct object *obj = lookup_object(r, oid);
 	if (!obj)
 		return create_object(r, oid, alloc_tree_node(r));
-	return object_as_type(r, obj, OBJ_TREE, 0);
+	return object_as_type(obj, OBJ_TREE, 0);
 }
 
 int parse_tree_buffer(struct tree *item, void *buffer, unsigned long size)
diff --git a/upload-pack.c b/upload-pack.c
index 39d0cf0..8673741 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -482,7 +482,8 @@
 {
 	if (get_oid_hex(hex, oid))
 		die("git upload-pack: expected SHA1 object, got '%s'", hex);
-	if (!has_object_file(oid))
+	if (!has_object_file_with_flags(oid,
+					OBJECT_INFO_QUICK | OBJECT_INFO_SKIP_FETCH_OBJECT))
 		return -1;
 	return do_got_oid(data, oid);
 }
@@ -1132,7 +1133,7 @@
 		struct strbuf symref_info = STRBUF_INIT;
 
 		format_symref_info(&symref_info, &data->symref);
-		packet_write_fmt(1, "%s %s%c%s%s%s%s%s%s agent=%s\n",
+		packet_write_fmt(1, "%s %s%c%s%s%s%s%s%s object-format=%s agent=%s\n",
 			     oid_to_hex(oid), refname_nons,
 			     0, capabilities,
 			     (data->allow_uor & ALLOW_TIP_SHA1) ?
@@ -1142,6 +1143,7 @@
 			     data->stateless_rpc ? " no-done" : "",
 			     symref_info.buf,
 			     data->allow_filter ? " filter" : "",
+			     the_hash_algo->name,
 			     git_user_agent_sanitized());
 		strbuf_release(&symref_info);
 	} else {
@@ -1422,7 +1424,8 @@
 	for (i = 0; i < data->haves.nr; i++) {
 		const struct object_id *oid = &data->haves.oid[i];
 
-		if (!has_object_file(oid))
+		if (!has_object_file_with_flags(oid,
+						OBJECT_INFO_QUICK | OBJECT_INFO_SKIP_FETCH_OBJECT))
 			continue;
 
 		oid_array_append(common, oid);
diff --git a/worktree.c b/worktree.c
index ee82235..cba2e54 100644
--- a/worktree.c
+++ b/worktree.c
@@ -50,9 +50,9 @@
 	struct strbuf worktree_path = STRBUF_INIT;
 
 	strbuf_add_absolute_path(&worktree_path, get_git_common_dir());
-	strbuf_strip_suffix(&worktree_path, "/.");
-	if (!strbuf_strip_suffix(&worktree_path, "/.git"))
-		strbuf_strip_suffix(&worktree_path, "/.");
+	if (!strbuf_strip_suffix(&worktree_path, "/.git/.") && /* in .git */
+	    !strbuf_strip_suffix(&worktree_path, "/.git")) /* in worktree */
+		strbuf_strip_suffix(&worktree_path, "/."); /* in bare repo */
 
 	worktree = xcalloc(1, sizeof(*worktree));
 	worktree->path = strbuf_detach(&worktree_path, NULL);
@@ -123,14 +123,7 @@
 	free(git_dir);
 }
 
-static int compare_worktree(const void *a_, const void *b_)
-{
-	const struct worktree *const *a = a_;
-	const struct worktree *const *b = b_;
-	return fspathcmp((*a)->path, (*b)->path);
-}
-
-struct worktree **get_worktrees(unsigned flags)
+struct worktree **get_worktrees(void)
 {
 	struct worktree **list = NULL;
 	struct strbuf path = STRBUF_INIT;
@@ -161,13 +154,6 @@
 	ALLOC_GROW(list, counter + 1, alloc);
 	list[counter] = NULL;
 
-	if (flags & GWT_SORT_LINKED)
-		/*
-		 * don't sort the first item (main worktree), which will
-		 * always be the first
-		 */
-		QSORT(list + 1, counter - 1, compare_worktree);
-
 	mark_current_worktree(list);
 	return list;
 }
@@ -418,7 +404,7 @@
 
 	if (worktrees)
 		free_worktrees(worktrees);
-	worktrees = get_worktrees(0);
+	worktrees = get_worktrees();
 
 	for (i = 0; worktrees[i]; i++) {
 		struct worktree *wt = worktrees[i];
@@ -577,7 +563,7 @@
 	struct worktree **worktrees, **p;
 	int ret = 0;
 
-	worktrees = get_worktrees(0);
+	worktrees = get_worktrees();
 	for (p = worktrees; *p; p++) {
 		struct worktree *wt = *p;
 		struct object_id oid;
diff --git a/worktree.h b/worktree.h
index d242a6e..516744c 100644
--- a/worktree.h
+++ b/worktree.h
@@ -18,19 +18,14 @@
 	int lock_reason_valid; /* private */
 };
 
-/* Functions for acting on the information about worktrees. */
-
-#define GWT_SORT_LINKED (1 << 0) /* keeps linked worktrees sorted */
-
 /*
  * Get the worktrees.  The primary worktree will always be the first returned,
- * and linked worktrees will be pointed to by 'next' in each subsequent
- * worktree.  No specific ordering is done on the linked worktrees.
+ * and linked worktrees will follow in no particular order.
  *
  * The caller is responsible for freeing the memory from the returned
- * worktree(s).
+ * worktrees by calling free_worktrees().
  */
-struct worktree **get_worktrees(unsigned flags);
+struct worktree **get_worktrees(void);
 
 /*
  * Returns 1 if linked worktrees exist, 0 otherwise.
diff --git a/wrapper.c b/wrapper.c
index 3a1c0e0..4ff4a9c 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -105,6 +105,14 @@
 	return xmemdupz(str, p ? p - str : len);
 }
 
+int xstrncmpz(const char *s, const char *t, size_t len)
+{
+	int res = strncmp(s, t, len);
+	if (res)
+		return res;
+	return s[len] == '\0' ? 0 : 1;
+}
+
 void *xrealloc(void *ptr, size_t size)
 {
 	void *ret;
diff --git a/wt-status.c b/wt-status.c
index 98dfa6f..20f2075 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -1484,6 +1484,18 @@
 	wt_longstatus_print_trailer(s);
 }
 
+static void show_sparse_checkout_in_use(struct wt_status *s,
+					const char *color)
+{
+	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);
+	wt_longstatus_print_trailer(s);
+}
+
 /*
  * Extract branch information from rebase/bisect
  */
@@ -1623,6 +1635,31 @@
 	return 0;
 }
 
+static void wt_status_check_sparse_checkout(struct repository *r,
+					    struct wt_status_state *state)
+{
+	int skip_worktree = 0;
+	int i;
+
+	if (!core_apply_sparse_checkout || r->index->cache_nr == 0) {
+		/*
+		 * Don't compute percentage of checked out files if we
+		 * aren't in a sparse checkout or would get division by 0.
+		 */
+		state->sparse_checkout_percentage = SPARSE_CHECKOUT_DISABLED;
+		return;
+	}
+
+	for (i = 0; i < r->index->cache_nr; i++) {
+		struct cache_entry *ce = r->index->cache[i];
+		if (ce_skip_worktree(ce))
+			skip_worktree++;
+	}
+
+	state->sparse_checkout_percentage =
+		100 - (100 * skip_worktree)/r->index->cache_nr;
+}
+
 void wt_status_get_state(struct repository *r,
 			 struct wt_status_state *state,
 			 int get_detached_from)
@@ -1658,6 +1695,7 @@
 	}
 	if (get_detached_from)
 		wt_status_get_detached_from(r, state);
+	wt_status_check_sparse_checkout(r, state);
 }
 
 static void wt_longstatus_print_state(struct wt_status *s)
@@ -1681,6 +1719,9 @@
 		show_revert_in_progress(s, state_color);
 	if (state->bisect_in_progress)
 		show_bisect_in_progress(s, state_color);
+
+	if (state->sparse_checkout_percentage != SPARSE_CHECKOUT_DISABLED)
+		show_sparse_checkout_in_use(s, state_color);
 }
 
 static void wt_longstatus_print(struct wt_status *s)
@@ -1994,7 +2035,7 @@
  *   [# branch.upstream <upstream><eol>
  *   [# branch.ab +<ahead> -<behind><eol>]]
  *
- *      <commit> ::= the current commit hash or the the literal
+ *      <commit> ::= the current commit hash or the literal
  *                   "(initial)" to indicate an initialized repo
  *                   with no commits.
  *
diff --git a/wt-status.h b/wt-status.h
index 73ab5d4..f1fa0ec 100644
--- a/wt-status.h
+++ b/wt-status.h
@@ -79,6 +79,7 @@
 
 #define HEAD_DETACHED_AT _("HEAD detached at ")
 #define HEAD_DETACHED_FROM _("HEAD detached from ")
+#define SPARSE_CHECKOUT_DISABLED -1
 
 struct wt_status_state {
 	int merge_in_progress;
@@ -90,6 +91,7 @@
 	int bisect_in_progress;
 	int revert_in_progress;
 	int detached_at;
+	int sparse_checkout_percentage; /* SPARSE_CHECKOUT_DISABLED if not sparse */
 	char *branch;
 	char *onto;
 	char *detached_from;